語音轉文字小工具開發Python


# -*- coding: utf-8 -*-

import requests
import re
import os
import time
from aip import AipSpeech
from tkinter import *
from tkinter import ttk
import tkinter.messagebox 

#參數    類型    描述    是否必須
#tex    String    合成的文本,使用UTF-8編碼,
#請注意文本長度必須小於1024字節    是
#cuid    String    用戶唯一標識,用來區分用戶,
#填寫機器 MAC 地址或 IMEI 碼,長度為60以內    否
#spd    String    語速,取值0-9,默認為5中語速    否
#pit    String    音調,取值0-9,默認為5中語調    否
#vol    String    音量,取值0-15,默認為5中音量    否
#per    String    發音人選擇, 0為女聲,1為男聲,
#3為情感合成-度逍遙,4為情感合成-度丫丫,默認為普通女    否


def wordToFileB():
    print('開始轉文件')
    data = word_e.get('1.0','end')
    per = var_per.get()
    filepath = var_path.get()
    num = len(word_e.get('1.0','end'))
    var_ws.set('已輸入'+str(num)+'')
    #print(data)
    #print(per)
    #print(filepath)
    if num > 500:
        tkinter.messagebox.showwarning('警告','請輸入不超過500字')
    else:
        wordToFile(data,per,filepath)
        flag = tkinter.messagebox.askokcancel('提示','轉語音成功,文件地址'+filepath+'是否播放')
        if flag:
            playFile(filepath)
            
            
def playFileB():
    print('開始播放')
    playFile(var_path.get())
    
def playFile(filepath):
    os.system(filepath)

def wordToFile(data,per,filepath,spd=5,pit=5,vol=5):
    result  = client.synthesis(data, 'zh', 1, {
        'vol': vol,
        'spd':spd,
        'pit':pit,
        'per':per
    })
    # 識別正確返回語音二進制 錯誤則返回dict 參照下面錯誤碼
    if not isinstance(result, dict):
        with open(filepath, 'wb') as f:
            f.write(result)


tk = Tk()
tk.title('文字轉語音')
tk.geometry('600x400')

frame = Frame(tk)
Label(tk,text='請輸入文字:(最多輸入500字)',width=200,anchor=W, justify=LEFT).place(x=200,y=10)
var_ws = Variable()
wordsize = Label(tk,width=300,textvariable=var_ws,anchor=W, justify=LEFT)
var_ws.set('已輸入0字')
wordsize.place(x=365,y=10)
#輸入文字
#var_word = Variable()
word_e = Text(tk,height=14)
word_e.place(x=20,y=40)

Label(tk,text='選擇發音(0女聲,1為男聲,3為情感合成-度逍遙,4為情感合成-度丫丫)').place(x=10,y=240)
var_per = Variable()
e = Entry(tk, textvariable=var_per,width=20)
var_per.set(3)
e.place(x=400,y=240)
Label(tk,text='輸入文件路徑:').place(x=10,y=270)
var_path = Variable()
e = Entry(tk, textvariable=var_path,width=50)
var_path.set('audio.mp3')
e.place(x=100,y=270)
Label(tk,text='輸入語速0-9:').place(x=10,y=300)
var_spd = Variable()
e = Entry(tk, textvariable=var_spd)
var_spd.set(5)
e.place(x=100,y=300)
Label(tk,text='輸入音調0-9:').place(x=180,y=300)
var_pit = Variable()
e = Entry(tk, textvariable=var_pit)
var_pit.set(5)
e.place(x=260,y=300)
Label(tk,text='輸入音量0-15:').place(x=310,y=300)
var_vol = Variable()
e = Entry(tk, textvariable=var_vol)
var_vol.set(5)
e.place(x=400,y=300)
Button(tk, text="轉語音", command=wordToFileB).place(x=200,y=330)
Button(tk, text="播語音", command=playFileB).place(x=260,y=330)
tk.mainloop()

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM