700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > Python调用API打造一个语音合成系统(百度智能云)

Python调用API打造一个语音合成系统(百度智能云)

时间:2023-01-23 02:50:42

相关推荐

Python调用API打造一个语音合成系统(百度智能云)

Python调用API打造一个语音合成系统(百度智能云)

将文字转换成各种不同味道(大叔型,萝莉音,精神小伙型等)的语音。

申请一个百度智能云账号

使用Python开发一款智能语音合成系统,所以需要Python SDK

进去可以看到它的使用说明

创建一个应用

下面就显示你创建成功

创建后按我这样申请免费额度

这样就可以获得三个重要的参数

APP_ID:应用id

API_KEY:应用钥匙

SECRET_KEY:安全码

所用软件

Pycharm.3

下载和配置百度语音客户端

1:下载百度Python api

pip install baidu-aip

2:配置百度语音客户端,具体步骤如下:

A:新建AipSpeech

from aip import AipSpeech""" 你的 APPID AK SK """APP_ID = '你的 App ID'API_KEY = '你的 Api Key'SECRET_KEY = '你的 Secret Key'client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)

B:新建一个py文件运行

import osimport sysimport tkinter as tkfrom tkinter import ttkfrom tkinter import messageboxfrom aip import AipSpeechclass play:def __init__(self):self.root=tk.Tk() #初始化窗口self.root.title("语音合成系统") #窗口名称self.root.geometry("700x700") #设置窗口大小self.root.resizable(width=True,height=True)#设置窗口是否可变,宽不可变,高可变,默认为Trueself.lb=tk.Label(self.root,text='请选择语音类型')#标签self.tt=tk.Text(self.root,width=80,height=30) #多行文本框self.cb=bobox(self.root, width=12) #下拉列表框#设置下拉列表框的内容self.cb['values']=('请选择-----','甜美型','萝莉型','大叔型','精神小伙型')self.cb.current(0) #将当前选择状态置为0,也就是第一项self.cb.bind("<<ComboboxSelected>>",self.go) #绑定go函数,然后触发事件self.lb1=tk.Label(self.root,text='请输入文件名:')self.e=tk.Entry(self.root,width=30,show=None, font=('Arial', 12)) #文本框self.b1=tk.Button(self.root, text='生成音频文件', width=10,height=1,command=self.sc) #按钮#各个组件的位置self.b1.place(x=200,y=520)self.lb.place(x=30,y=30)self.cb.place(x=154,y=30)self.e.place(x=130,y=490)self.lb1.place(x=30,y=490)self.tt.place(x=30,y=60)self.root.mainloop()#启动主页面def go(self, *arg): # *arg是为了接受多个如同列表的参数,还有个**kwarg能接受如同字典的参数# 百度apiself.APP_ID = '你的 App ID'self.API_KEY = '你的 Api Key'self.SECRET_KEY = '你的 Secret Key'self.client = AipSpeech(self.APP_ID, self.API_KEY, self.SECRET_KEY) # 初始化端口建立连接if self.cb.get() == '请选择-----':self.tt.delete('1.0', 'end') # 清除多行文本框的内容elif self.cb.get() == '甜美型': # 获取下拉列表框的选项来设置不同的音,下同self.res = self.client.synthesis(self.tt.get('0.0', 'end'), 'zh', 1,{'vol': 3, 'spd': 3, 'pit': 4, 'per': 0})return self.res # 返回音频信息 ,下同elif self.cb.get() == '萝莉型':self.res = self.client.synthesis(self.tt.get('0.0', 'end'), 'zh', 1,{'vol': 2, 'spd': 2, 'pit': 3, 'per': 0})return self.reselif self.cb.get() == '大叔型':self.res = self.client.synthesis(self.tt.get('0.0', 'end'), 'zh', 1,{'vol': 5, 'spd': 7, 'pit': 6, 'per': 1})return self.reselif self.cb.get() == '精神小伙型':self.res = self.client.synthesis(self.tt.get('0.0', 'end'), 'zh', 1,{'vol': 7, 'spd': 8, 'pit': 8, 'per': 1})return self.resdef sc(self):self.go() # 引入go函数,不然下面的self.res 没法调用aa = self.tt.get('0.0', 'end') # 多行文本框内容为空ab = os.path.dirname(sys.argv[0]) + os.sep + self.e.get() + '.mp3' # 文件名的地址,与程序同目录if len(aa) >= 1024: # 判断长度是否超过1024messagebox.showerror(title='出错了!', message='^_^最多不超过1024个字节^_^')else:if not os.path.exists(ab): # 如果没有这个文件则创建with open(ab, 'wb+') as f:f.write(str(self.res).encode('utf-8')) # 将音频信息写入到文件# 生成结束给一个提示messagebox.showinfo(title='完毕!', message='生成完毕,文件在程序目录下')else:messagebox.showerror(title='出错了!', message='文件名已存在') # 有这个文件就提示play()

生成的结果

在目录下生成如下的MP3

亟待解决的问题

搞出来的MP3不能播放,MP3用记事本打开显示是这样的:

(如果有知道的伙伴可以在底下评论写下解决方案,方便大家)

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。