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

  • synthesis.py这里主要是配合界面实现一些文本读取和请求接口处理返回值的逻辑 。 首先定义一个Synthesis_modelclass 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.pysynthesistool.py中是和请求有道智云API直接相关的一些方法 , 最核心的是connect()方法 , 整合了API所要求的各个参数 , 并调用执行请求的方法do_request() , 并返回API处理结果 。 def connect(text,lang_type): q = text data = http://kandian.youth.cn/index/{} 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 。 项目地址:特别提示:1、运行demo时 , 需要替换synthesistool.py模块中的 APP_KEY 、 APP_SECRET为你自己生成的 APP_KEY、APP_SECRET哦2、该工程默认存放结果存在./result 文件夹下 , 你需要手动在项目路径下创建该目录 。 或者修改为任意你想存放的位置
  • 总结以上就是我的开发过程 , 有道智云的语音合成API文档清晰 , 调用过程全程无坑 , 开发体验和合成效果都令人感到舒适 。
    我有故事 , 我把它交给机器人来讲 , 闭目养神不枯燥 , 真是一件美事!
    最后 , 小编想说:我是一名python开发工程师 , 整理了一套最新的python系统学习教程 , 想要这些资料的可以关注私信小编“01”即可 , 希望能对你有所帮助.


    推荐阅读