记一次讲故事机器人的开发-我有故事,让机器人来读 (2)

其中启动按钮btn_sure的绑定事件synthesis_files()来收集带所有的文本文件,启动合成,并打印运行结果:

def synthesis_files(): if syn_m.file_paths: message=syn_m.get_synthesis_result() tk.messagebox.showinfo("提示", message) os.system('start' + '.\\result') else : tk.messagebox.showinfo("提示","无文件")

synthesis.py

这里主要是配合界面实现一些文本读取和请求接口处理返回值的逻辑。首先定义一个Synthesis_model

class Synthesis_model(): def __init__(self,file_paths,result_root_path,syn_type): self.file_paths=file_paths # 待合成文件路径 self.result_root_path=result_root_path # 结果路径 self.syn_type=syn_type # 合成类型

get_synthesis_result()方法实现了批量读取文件并调用合成方法、处理返回信息的逻辑:

def get_synthesis_result(self): syn_result="" for file_path in self.file_paths: # 读取文件 file_name=os.path.basename(file_path).split('.')[0] file_content=open(file_path,encoding='utf-8').read() # 调用合成方法 result=self.synthesis_use_netease(file_name,file_content) # 处理返回消息 if result=="1": syn_result=syn_result+file_path+" ok !\n" else: syn_result=syn_result+file_path+result return syn_result

单独定义了方法synthesis_use_netease()具体实现调用API的方法,这样增加了demo的扩展性,实现了一种合成模块可插拔的松耦合形式:

def synthesis_use_netease(self,file_name,text): result=connect(text,'zh-CHS') print(result) if result.headers['Content-Type']=="audio/mp3": millis = int(round(time.time() * 1000)) filePath = "./result/" + file_name+"-"+str(millis) + ".mp3" fo = open(filePath, 'wb') fo.write(result.content) fo.close() return "1" else: return "error:"+result.content

synthesistool.py

synthesistool.py中是和请求有道智云API直接相关的一些方法,最核心的是connect()方法,整合了API所要求的各个参数,并调用执行请求的方法do_request(),并返回API处理结果。

def connect(text,lang_type): q = text data = {} data['langType'] = lang_type salt = str(uuid.uuid1()) signStr = APP_KEY + q + salt + APP_SECRET sign = encrypt(signStr) data['appKey'] = APP_KEY data['q'] = q data['salt'] = salt data['sign'] = sign response = do_request(data) return response

需要体验一下的小伙伴,请下载我的代码自行尝试或去官网体验 : P。项目地址:https://github.com/LemonQH/SpeechSynthesis

特别提示:
1、运行demo时,需要替换synthesistool.py模块中的 APP_KEY 、 APP_SECRET为你自己生成的 APP_KEY、APP_SECRET哦
2、该工程默认存放结果存在./result 文件夹下,你需要手动在项目路径下创建该目录。或者修改为任意你想存放的位置
 

总结

以上就是我的开发过程,有道智云的语音合成API文档清晰,调用过程全程无坑,开发体验和合成效果都令人感到舒适。

我有故事,我把它交给机器人来讲,闭目养神不枯燥,真是一件美事!

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpfyjy.html