是为了做视频配音。然后一句句去下载很麻烦嘛,就想搞个轮子。
自动识别多行文本,或者 excel,然后每段落单独下载为 mp3,这样比较方便。
目前是直接去摸了 gcloud 官方的 api 啦,传送门:
Quickstart: Using the Client Libraries | Cloud Text-to-Speech API | Google Cloud
现在全局开着飞机,但跑 sample.py 还是会 504 超时。(访问 google 或 youtube 或 g trans 都 ok 的)
想请问有没有人用过 google 这个接口?
或者有其它轮子也可以推荐一下
py3调用讯飞tts,分享下。
#!/usr/bin/env python3 # -*- coding: utf-8 -*- ''' 这是利用了 讯飞 的 在线文本转语音 api,把单句文本转为语音文件,并保存到本地。 需要先填入 APPID 和 API_KEY。 详情见 https://www.xfyun.cn/services/online_tts ''' import json import requests import time import hashlib import base64 import os URL = 'http://api.xfyun.cn/v1/service/v1/tts' AUE = 'lame' # raw=wav, lame=mp3 APPID = '' API_KEY = '' def getHeader(): curTime = str(int(time.time())).encode('utf-8') param = { 'aue': AUE, 'auf': 'audio/L16;rate=16000', 'voice_name': 'xiaoyan', 'engine_type': 'intp65', } paramBytes = str(param).encode('utf-8') # fix format (if ' or space exists, returns params error.) paramBytes = paramBytes.replace(b'\'', b'\"').replace(b' ', b'') paramBase64 = base64.b64encode(paramBytes) m2 = hashlib.md5() m2.update(API_KEY.encode('utf-8') + curTime + paramBase64) checkSum = m2.hexdigest() header = { 'X-CurTime': curTime, 'X-Param': paramBase64, 'X-Appid': APPID, 'X-CheckSum': checkSum, 'X-Real-Ip': '127.0.0.1', 'Content-Type': 'application/x-www-form-urlencoded; charset=', } return header def xunfei_tts(text): header = getHeader() data = {'text': text} r = requests.post(URL, headers=header, data=data) if r.headers['Content-Type'] == "audio/mpeg": print("success | sid: %s | %s" % (r.headers['sid'], text[:10])) return r.content else: print(r.text) if __name__ == '__main__': text = '床前明月光,疑是地上霜。' text += 'The moonlight flow on the floor, just like frost.' result = xunfei_tts(text) if result: root = os.path.split(os.path.realpath(__file__))[0] ext = '.wav'if AUE == "raw" else '.mp3' file = os.path.join(root, 'test' + ext) with open(file, 'wb') as f: f.write(result)
![]() | 1 popbones 2018-08-23 19:46:42 +08:00 via iPhone Mac OS X 系统自带文本转语音,命令行直接调用 say 命令研究一下 |
2 bfpiaoran 2018-08-23 19:47:10 +08:00 直接谷歌翻译不行么。。。。 |
3 ReVanTis 2018-08-23 19:50:58 +08:00 via Android 以前试过用 google tts 和 yandex 的 tts 做 alexa skill,那时候还不太懂改一些请求的参数,也是发现需要转码率和采样率,最终还是用了讯飞的离线库搞定的。 |
4 nuko 2018-08-23 20:01:45 +08:00 我记得讯飞有接口,语音转 TTS 的 |
![]() | 5 JCZ2MkKb5S8ZX9pq OP @popbones 嗯,有机会看看。不过这次的最终使用者,用的是 win。 |
![]() | 6 JCZ2MkKb5S8ZX9pq OP |
![]() | 7 xubeiyan 2018-08-23 20:47:35 +08:00 via Android tts 很多家都有的啊,百度的也可以啊 |
![]() | 8 JCZ2MkKb5S8ZX9pq OP @xubeiyan 百度心理上比较抵触 ( □ ) |
![]() | 9 yamedie 2018-08-23 21:49:10 +08:00 百度的 api 比讯飞大方, 普通开发者每日调用限额 20W 次, 对比讯飞的 500 次 |
![]() | 10 ksharp8 2018-08-23 22:48:33 +08:00 可以试用科大讯飞的 api,还支持多种方言 |
![]() | 11 WildCat 2018-08-23 3:02:07 +08:00 我做了百度和腾讯 AI 的封装,最近太忙就没完善。 https://github.com/imWildCat/AITK/blob/master/aitk/cloud/tencent/speech.py#L98 官网: https://aitk.ai 需要的话,我把文档和 pip 发布下。 |
![]() | 12 WildCat 2018-08-23 23:03:07 +08:00 额 百度的封装还没做,今晚搞定。 |
![]() | 13 kimwang 2018-08-24 02:16:58 +08:00 不是 IT 人,不会搞,但对这个非常需要,特别是粤语的,给文化低的老人家读字,听她喜欢的东西。 支持楼主继续搞事情。 |
![]() | 14 JCZ2MkKb5S8ZX9pq OP |
![]() | 15 Yvette 2018-08-24 04:55:21 +08:00 say +1 |
![]() | 16 helloiac 2018-08-24 07:24:04 +08:00 via Android 看看这个 https://evaread.net/ |
17 fingerprint 2018-08-24 10:39:27 +08:00 讯飞、百度、谷歌都用过。如果是英文转语音建议用谷歌,最好是在国外的 vps 上弄个服务自己用。中文的话讯飞比较好。 |
![]() | 18 JCZ2MkKb5S8ZX9pq OP @fingerprint 嗯,讯飞的英语太惨了,日语我都没试出来。 |
![]() | 19 JCZ2MkKb5S8ZX9pq OP @helloiac 666 不过我已经搞完了。我们后期还是会自己加剪辑的。 |
![]() | 20 JCZ2MkKb5S8ZX9pq OP py3 调用讯飞 tts 的代码,直接 append 分享了。 其中 params 格式化那步有点坑,测了半天才发现是引号和空格的问题,按理说后端应该判断下。 感谢大家的建议。 |
![]() | 21 yo0o0o0 2018-08-24 15:43:32 +08:00 我有写好的用 node,调百度的 api。https://github.com/JesseHeisenberg/txtToAudio |
![]() | 22 jinggoing 2018-08-24 17:16:39 +08:00 没有人用过思必驰的语音吗 |
23 fxg 2018-08-24 17:19:08 +08:00 推荐百度,感觉百度的技术和营销部门是完全两个世界 |
![]() | 24 zhchyu999 2018-08-24 17:22:10 +08:00 via Android 讯飞是相当贵,自己的模型更贵 |
![]() | 27 947211232 2018-08-25 08:39:45 +08:00 #14 不放过一丝汲取知识的机会,为在下打开了新视野。 |
![]() | 28 JCZ2MkKb5S8ZX9pq OP @fxg 这个我认同,百度有些计数部门是不错。 之前用 echart 在 github 交流过一阵,还不错的。现在 echart 也还在用,不过也想尝试 d3。 |
![]() | 29 JCZ2MkKb5S8ZX9pq OP @est 好像搜到过 py 的离线版,用了在线版主要是考虑效果好一点。 不过对我们短片配音来说,那种拙劣的机器人感,有时候反而效果更好。 |