• 好好学习,天天向上~
  • 欢迎欢迎~

python实战小项目,深度学习合成语音,调用百度人工智能 API 实现

python lcc 486℃ 0评论

上一节,我们介绍了让电脑认出菜品,这一节,我们介绍下文字怎么转成语音。

语音转文字,已经非常多了,各大聊天社交软件都有,甚至手机电脑出厂时就已经带有这样的功能了。而文字转语音相对就比较少,我们能自己做一个吗?答案当然是肯定的。

为了简单,我们依然使用 python 调用百度的人工智能 API 实现,同上一节一样,依然是分两步走:

1. 获取 token


获取token需要两个 key,即 API Key(AK) Secret Key(SK)。得到两个 key 后,即可利用下面这个网址获取 token

https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=【AK】&client_secret=【SK】

注册百度AI帐号,即可免费获得 AKSK

以下是 python 代码,文件名 token.py

# encoding:utf-8
import urllib, urllib2, sys
import ssl, json

AK = "TwAxxxxxxxxxxxxxxxxxxxxZn"                # 官网获取的 AK
SK = "nExxxxxxxxxxxxxxxxxxxxxxxxxxxxxdXF"       # 官网获取的 SK

host = 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials'\
       '&client_id=%s'\
       '&client_secret=%s' % (AK, SK)

def GetToken():
    request = urllib2.Request(host)
    request.add_header('Content-Type', 'application/json; charset=UTF-8')
    response = urllib2.urlopen(request)
    content = response.read()
    if (content):
        js = json.loads(content)
        return js['access_token']
    return None

代码非常简单,就是把网址添加上 AKSK, 带上 http 头,访问之,最终解析 json 数据而已。更加详细的信息可参照上一讲 : 让电脑认出菜品

2. 识别


拿到 token 后,就非常简单了,直接访问以下网址即可:

http://tsn.baidu.com/text2audio?lan=zh&ctp=1&cuid=abcdxxx&tok=【你的token】&tex=【要合成语音的文字】&vol=9&per=0&spd=5&pit=5

上面的链接,有以下参数可以调节:

  • 音量:vol=9

  • 语速:spd=5

  • 音调:pid=5

  • per 选填 发音人选择, 0为普通女声,1为普通男生,3为情感合成-度逍遥,4为情感合成-度丫丫,默认为普通女声

直接用浏览器,就可以获得合成的语音:

当然,我们这里也是要上代码的:

# encoding:utf-8
import base64
import urllib, requests
from urllib import quote
import urllib2, json
from token import GetToken

def GetSpeech(token, text):
    rqt = "http://tsn.baidu.com/text2audio?lan=zh&ctp=1&cuid=abcdxxx&tok=%s&tex=%s&vol=9&per=0&spd=5&pit=5" % (token, urllib.quote(text))
    data_get = requests.get(rqt).content
    fp = open("test.mp3", "w+")         # 我们将合成的语音写到文件 test.mp3
    fp.write(data_get)
    fp.close

if __name__ == "__main__":
    GetSpeech(GetToken(), "向日葵智能")  # 以合成“向日葵智能”为例

这里放上最终合成的语音,大家可以听听:语音合成结果试听(向日葵智能)

点赞 (0)分享 (0)
(5)个小伙伴在吐槽
发表我的评论
取消评论
表情     7 + 9 = ? (必填)