1. # -*- coding: utf-8 -*-
  2. import requests
  3. import re
  4. import os
  5. import time
  6. from aip import AipSpeech
  7. from tkinter import *
  8. from tkinter import ttk
  9. import tkinter.messagebox
  10. #参数 类型 描述 是否必须
  11. #tex String 合成的文本,使用UTF-8编码,
  12. #请注意文本长度必须小于1024字节 是
  13. #cuid String 用户唯一标识,用来区分用户,
  14. #填写机器 MAC 地址或 IMEI 码,长度为60以内 否
  15. #spd String 语速,取值0-9,默认为5中语速 否
  16. #pit String 音调,取值0-9,默认为5中语调 否
  17. #vol String 音量,取值0-15,默认为5中音量 否
  18. #per String 发音人选择, 0为女声,1为男声,
  19. #3为情感合成-度逍遥,4为情感合成-度丫丫,默认为普通女 否
  20. def wordToFileB():
  21. print(\'开始转文件\')
  22. data = word_e.get(\'1.0\',\'end\')
  23. per = var_per.get()
  24. filepath = var_path.get()
  25. num = len(word_e.get(\'1.0\',\'end\'))
  26. var_ws.set(\'已输入\'+str(num)+\'\')
  27. #print(data)
  28. #print(per)
  29. #print(filepath)
  30. if num > 500:
  31. tkinter.messagebox.showwarning(\'警告\',\'请输入不超过500\')
  32. else:
  33. wordToFile(data,per,filepath)
  34. flag = tkinter.messagebox.askokcancel(\'提示\',\'转语音成功,文件地址\'+filepath+\'是否播放\')
  35. if flag:
  36. playFile(filepath)
  37. def playFileB():
  38. print(\'开始播放\')
  39. playFile(var_path.get())
  40. def playFile(filepath):
  41. os.system(filepath)
  42. def wordToFile(data,per,filepath,spd=5,pit=5,vol=5):
  43. result = client.synthesis(data, \'zh\', 1, {
  44. \'vol\': vol,
  45. \'spd\':spd,
  46. \'pit\':pit,
  47. \'per\':per
  48. })
  49. # 识别正确返回语音二进制 错误则返回dict 参照下面错误码
  50. if not isinstance(result, dict):
  51. with open(filepath, \'wb\') as f:
  52. f.write(result)
  53. tk = Tk()
  54. tk.title(\'文字转语音\')
  55. tk.geometry(\'600x400\')
  56. frame = Frame(tk)
  57. Label(tk,text=\'请输入文字:(最多输入500字)\',width=200,anchor=W, justify=LEFT).place(x=200,y=10)
  58. var_ws = Variable()
  59. wordsize = Label(tk,width=300,textvariable=var_ws,anchor=W, justify=LEFT)
  60. var_ws.set(\'已输入0\')
  61. wordsize.place(x=365,y=10)
  62. #输入文字
  63. #var_word = Variable()
  64. word_e = Text(tk,height=14)
  65. word_e.place(x=20,y=40)
  66. Label(tk,text=\'选择发音(0女声,1为男声,3为情感合成-度逍遥,4为情感合成-度丫丫)\').place(x=10,y=240)
  67. var_per = Variable()
  68. e = Entry(tk, textvariable=var_per,width=20)
  69. var_per.set(3)
  70. e.place(x=400,y=240)
  71. Label(tk,text=\'输入文件路径:\').place(x=10,y=270)
  72. var_path = Variable()
  73. e = Entry(tk, textvariable=var_path,width=50)
  74. var_path.set(\'audio.mp3\')
  75. e.place(x=100,y=270)
  76. Label(tk,text=\'输入语速0-9\').place(x=10,y=300)
  77. var_spd = Variable()
  78. e = Entry(tk, textvariable=var_spd)
  79. var_spd.set(5)
  80. e.place(x=100,y=300)
  81. Label(tk,text=\'输入音调0-9\').place(x=180,y=300)
  82. var_pit = Variable()
  83. e = Entry(tk, textvariable=var_pit)
  84. var_pit.set(5)
  85. e.place(x=260,y=300)
  86. Label(tk,text=\'输入音量0-15\').place(x=310,y=300)
  87. var_vol = Variable()
  88. e = Entry(tk, textvariable=var_vol)
  89. var_vol.set(5)
  90. e.place(x=400,y=300)
  91. Button(tk, text="转语音", command=wordToFileB).place(x=200,y=330)
  92. Button(tk, text="播语音", command=playFileB).place(x=260,y=330)
  93. tk.mainloop()

 

版权声明:本文为liangblog原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/liangblog/p/10436258.html