当前位置 主页 > 网站技术 > 代码类 >

    Python 音频生成器的实现示例

    栏目:代码类 时间:2019-12-24 21:09

    使用Python生成不同声音的音频

    第一步先去百度AI中注册账号,在控制台中创建语音技术应用,获取AppID,API Key,Secret Key

    第二步 引用

    from tkinter import *
    from tkinter.filedialog import askdirectory
    from aip import AipSpeech
    from tkinter import ttk
    

    第三步搭建窗体

    root = Tk()
    root.title('生成语音') 
    path = StringVar()
    pathmc=StringVar() 
    pathnr=StringVar() 
    
    Label(root,text = "保存路径:").grid(row = 0, column = 0)
    Entry(root, textvariable = path).grid(row = 0, column = 1)
    Button(root, text = "路径选择", command = selectPath).grid(row = 0, column = 3)  
    Label(root,text = "语音名称:").grid(row = 2, column = 0)
    Entry(root, textvariable = pathmc).grid(row = 2, column = 1)
    Label(root,text = "语音内容:").grid(row = 3, column = 0)
    Entry(root, textvariable = pathnr).grid(row = 3, column = 1)
    Button(root, text = "保存", command = Save).grid(row = 4, column = 0)  
    #下拉框
    Label(root,text = "声音类型:").grid(row =1, column = 0)
    number = StringVar()
     
    numberChosen = ttk.Combobox(root, width=12, textvariable=number)
     
    numberChosen['values'] = ('女声', '男声', '度逍遥', '度丫丫') 
     
    numberChosen.grid(column=1, row=1) 
     
    numberChosen.current(0) 
    
    root.mainloop()

    第四步 创建方法

    #保存地址
    def selectPath():
     path_ = askdirectory()
     path.set(path_)
     print(path_)
     生成音频的参数 
    def Save():
       switch = {'女声': 0,       
         '男声': 1,       
         '度逍遥': 3, 
         '度丫丫': 4,  
         }
    
       lx=switch.get(number.get(),"0")
       yuying(path.get(),pathmc.get(),pathnr.get(),lx)
    #生成音频   
    def yuying(url,title,contain,lx):
      APP_ID = 'XXX'#百度AI中获得
      API_KEY = 'XXX'
      SECRET_KEY = 'XXX'
      client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)
      result = client.synthesis(contain, 'zh', 1, {
      'vol': 5,'per':lx,'spd':2,# per  发音人选择, 0为女声,1为男声,3为情感合成-度逍遥,4为情感合成-度丫丫,默认为普通女  否 
      })
      if not isinstance(result, dict):
        with open(url+'\\'+title+'.mp3', 'wb') as f:
         f.write(result) 

    合起来的代码就是

    from tkinter import *
    from tkinter.filedialog import askdirectory
    from aip import AipSpeech
    from tkinter import ttk
    
    def selectPath():
     path_ = askdirectory()
     path.set(path_)
     print(path_)
    def Save():
       switch = {'女声': 0,       
         '男声': 1,       
         '度逍遥': 3, 
         '度丫丫': 4,  
         }
    
       lx=switch.get(number.get(),"0")
       yuying(path.get(),pathmc.get(),pathnr.get(),lx)
    def yuying(url,title,contain,lx):
      APP_ID = 'XXX'#百度AI中获得
      API_KEY = 'XXX'
      SECRET_KEY = 'XXX'
      client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)
      result = client.synthesis(contain, 'zh', 1, {
      'vol': 5,'per':lx,'spd':2,# per  发音人选择, 0为女声,1为男声,3为情感合成-度逍遥,4为情感合成-度丫丫,默认为普通女  否 
      })
      if not isinstance(result, dict):
        with open(url+'\\'+title+'.mp3', 'wb') as f:
         f.write(result) 
    
    root = Tk()
    root.title('生成语音') 
    path = StringVar()
    pathmc=StringVar() 
    pathnr=StringVar() 
    
    Label(root,text = "保存路径:").grid(row = 0, column = 0)
    Entry(root, textvariable = path).grid(row = 0, column = 1)
    Button(root, text = "路径选择", command = selectPath).grid(row = 0, column = 3)  
    Label(root,text = "语音名称:").grid(row = 2, column = 0)
    Entry(root, textvariable = pathmc).grid(row = 2, column = 1)
    Label(root,text = "语音内容:").grid(row = 3, column = 0)
    Entry(root, textvariable = pathnr).grid(row = 3, column = 1)
    Button(root, text = "保存", command = Save).grid(row = 4, column = 0)  
    
     
    Label(root,text = "声音类型:").grid(row =1, column = 0)
    number = StringVar()
     
    numberChosen = ttk.Combobox(root, width=12, textvariable=number)
     
    numberChosen['values'] = ('女声', '男声', '度逍遥', '度丫丫') 
     
    numberChosen.grid(column=1, row=1) 
     
    numberChosen.current(0) 
    
    root.mainloop()