Google 文本转语音的轮子 谁搞过? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
DAOCLOUD
推荐学习书目
Python Cookbook
Using Google App Engine
推荐下载
Latest Google App Engine SDK
其他兼容技术
AppScale
JCZ2MkKb5S8ZX9pq
V2EX    Google App Engine

Google 文本转语音的轮子 谁搞过?

  •  
  •   JCZ2MkKb5S8ZX9pq 2018-08-23 19:23:55 +08:00 8466 次点击
    这是一个创建于 2605 天前的主题,其中的信息可能已经有所发展或是发生改变。

    需求

    是为了做视频配音。然后一句句去下载很麻烦嘛,就想搞个轮子。
    自动识别多行文本,或者 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 这个接口?

    或者有其它轮子也可以推荐一下

    第 1 条附言    2018-08-24 15:31:26 +08:00

    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) 
    29 条回复    2018-08-25 15:28:16 +08:00
    popbones
        1
    popbones  
       2018-08-23 19:46:42 +08:00 via iPhone
    Mac OS X 系统自带文本转语音,命令行直接调用 say 命令研究一下
    bfpiaoran
        2
    bfpiaoran  
       2018-08-23 19:47:10 +08:00
    直接谷歌翻译不行么。。。。
    ReVanTis
        3
    ReVanTis  
       2018-08-23 19:50:58 +08:00 via Android
    以前试过用 google tts 和 yandex 的 tts 做 alexa skill,那时候还不太懂改一些请求的参数,也是发现需要转码率和采样率,最终还是用了讯飞的离线库搞定的。
    nuko
        4
    nuko  
       2018-08-23 20:01:45 +08:00
    我记得讯飞有接口,语音转 TTS 的
    JCZ2MkKb5S8ZX9pq
        5
    JCZ2MkKb5S8ZX9pq  
    OP
       2018-08-23 20:11:17 +08:00
    @popbones 嗯,有机会看看。不过这次的最终使用者,用的是 win。
    JCZ2MkKb5S8ZX9pq
        6
    JCZ2MkKb5S8ZX9pq  
    OP
       2018-08-23 20:12:04 +08:00
    @ReVanTis @nuko 嗯 我看下讯飞
    xubeiyan
        7
    xubeiyan  
       2018-08-23 20:47:35 +08:00 via Android
    tts 很多家都有的啊,百度的也可以啊
    JCZ2MkKb5S8ZX9pq
        8
    JCZ2MkKb5S8ZX9pq  
    OP
       2018-08-23 21:39:44 +08:00
    @xubeiyan 百度心理上比较抵触 ( □ )
    yamedie
        9
    yamedie  
       2018-08-23 21:49:10 +08:00
    百度的 api 比讯飞大方, 普通开发者每日调用限额 20W 次, 对比讯飞的 500 次
    ksharp8
        10
    ksharp8  
       2018-08-23 22:48:33 +08:00
    可以试用科大讯飞的 api,还支持多种方言
    WildCat
        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 发布下。
    WildCat
        12
    WildCat  
       2018-08-23 23:03:07 +08:00
    额 百度的封装还没做,今晚搞定。
    kimwang
        13
    kimwang  
       2018-08-24 02:16:58 +08:00
    不是 IT 人,不会搞,但对这个非常需要,特别是粤语的,给文化低的老人家读字,听她喜欢的东西。
    支持楼主继续搞事情。
    JCZ2MkKb5S8ZX9pq
        14
    JCZ2MkKb5S8ZX9pq  
    OP
       2018-08-24 02:45:38 +08:00
    @kimwang 用了讯飞的,有支持粤语。
    我是有明确的实际应用,可能并不适合你。
    但你可以搜索看看,应该挺多人搞过了。比如我洗澡的时候就会让 safari 读网页听,应该有类似工具吧。
    Yvette
        15
    Yvette  
       2018-08-24 04:55:21 +08:00
    say +1
    helloiac
        16
    helloiac  
       2018-08-24 07:24:04 +08:00 via Android
    fingerprint
        17
    fingerprint  
       2018-08-24 10:39:27 +08:00
    讯飞、百度、谷歌都用过。如果是英文转语音建议用谷歌,最好是在国外的 vps 上弄个服务自己用。中文的话讯飞比较好。
    JCZ2MkKb5S8ZX9pq
        18
    JCZ2MkKb5S8ZX9pq  
    OP
       2018-08-24 15:14:44 +08:00
    @fingerprint 嗯,讯飞的英语太惨了,日语我都没试出来。
    JCZ2MkKb5S8ZX9pq
        19
    JCZ2MkKb5S8ZX9pq  
    OP
       2018-08-24 15:15:34 +08:00
    @helloiac 666 不过我已经搞完了。我们后期还是会自己加剪辑的。
    JCZ2MkKb5S8ZX9pq
        20
    JCZ2MkKb5S8ZX9pq  
    OP
       2018-08-24 15:32:50 +08:00
    py3 调用讯飞 tts 的代码,直接 append 分享了。
    其中 params 格式化那步有点坑,测了半天才发现是引号和空格的问题,按理说后端应该判断下。
    感谢大家的建议。
    yo0o0o0
        21
    yo0o0o0  
       2018-08-24 15:43:32 +08:00
    我有写好的用 node,调百度的 api。https://github.com/JesseHeisenberg/txtToAudio
    jinggoing
        22
    jinggoing  
       2018-08-24 17:16:39 +08:00
    没有人用过思必驰的语音吗
    fxg
        23
    fxg  
       2018-08-24 17:19:08 +08:00
    推荐百度,感觉百度的技术和营销部门是完全两个世界
    zhchyu999
        24
    zhchyu999  
       2018-08-24 17:22:10 +08:00 via Android
    讯飞是相当贵,自己的模型更贵
    est
        25
    est  
       2018-08-24 17:25:57 +08:00
    @ReVanTis 讯飞之前官方不提供 python 离线包,理由是脚本语言可以被反编译。。不知道现在如何了。。
    diggerdu
        26
    diggerdu  
       2018-08-25 07:35:07 +08:00 via iPhone
    @jinggoing 思必驰技术可以的 交大办的
    947211232
        27
    947211232  
       2018-08-25 08:39:45 +08:00
    #14 不放过一丝汲取知识的机会,为在下打开了新视野。
    JCZ2MkKb5S8ZX9pq
        28
    JCZ2MkKb5S8ZX9pq  
    OP
       2018-08-25 15:25:19 +08:00
    @fxg 这个我认同,百度有些计数部门是不错。
    之前用 echart 在 github 交流过一阵,还不错的。现在 echart 也还在用,不过也想尝试 d3。
    JCZ2MkKb5S8ZX9pq
        29
    JCZ2MkKb5S8ZX9pq  
    OP
       2018-08-25 15:28:16 +08:00
    @est 好像搜到过 py 的离线版,用了在线版主要是考虑效果好一点。
    不过对我们短片配音来说,那种拙劣的机器人感,有时候反而效果更好。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     892 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 28ms UTC 20:54 PVG 04:54 LAX 13:54 JFK 16:54
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86