zoukankan      html  css  js  c++  java
  • 语音转文字小工具开发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()
  • 相关阅读:
    网易云音乐
    喜马拉雅FM
    喜马拉雅
    169美女图片
    美女图片
    Kerberos简介及常见问题
    【转载】Spark性能优化指南——高级篇
    【转载】 Spark性能优化指南——基础篇
    Sqoop使用手册
    kafka性能基准测试
  • 原文地址:https://www.cnblogs.com/liangblog/p/10436258.html
Copyright © 2011-2022 走看看