Python实现百度API文字转语音,让你的代码更智能化

准备工作
1、首先需要去百度智能云注册账号,官网:https://cloud.baidu.com/

2、登陆进入百度语音,领取免费资源

3、创建应用,记下自己的 APIkey和 Secret Key写入代码对应的位置

Python示例代码
# coding=utf-8

import sys
import json

# 保证兼容python2以及python3
IS_PY3 = sys.version_info.major == 3
if IS_PY3:
from urllib.request import urlopen
from urllib.request import Request
from urllib.error import URLError
from urllib.parse import urlencode
from urllib.parse import quote_plus
else:
import urllib2
from urllib import quote_plus
from urllib2 import urlopen
from urllib2 import Request
from urllib2 import URLError
from urllib import urlencode

# 替换你的 API_KEY
API_KEY = '你的APIKEY'

# 替换你的 SECRET_KEY
SECRET_KEY = '你的Secret Key'

# 信息内容文本
TEXT = "这里填写你要转成语音的文字"

TTS_URL = 'http://tsn.baidu.com/text2audio'

""" TOKEN start """

TOKEN_URL = 'http://openapi.baidu.com/oauth/2.0/token'
# 发音人选择, 基础音库:0为度小美,1为度小宇,3为度逍遥,4为度丫丫,
# 精品音库:5为度小娇,103为度米朵,106为度博文,110为度小童,111为度小萌,默认为度小美
PER = 0
# 语速,取值0-15,默认为5中语速
SPD = 5
# 音调,取值0-15,默认为5中语调
PIT = 5
# 音量,取值0-9,默认为5中音量
VOL = 5
# 下载的文件格式, 3:mp3(default) 4: pcm-16k 5: pcm-8k 6. wav
AUE = 3

"""
获取token
"""
def fetch_token():
params = {'grant_type': 'client_credentials',
'client_id': API_KEY,
'client_secret': SECRET_KEY}
post_data = urlencode(params)
if (IS_PY3):
post_data = post_data.encode('utf-8')
req = Request(TOKEN_URL, post_data)
try:
f = urlopen(req, timeout=5)
result_str = f.read()
except URLError as err:
print('token http response http code : ' + str(err.code))
result_str = err.read()
if (IS_PY3):
result_str = result_str.decode()


result = json.loads(result_str)

if ('access_token' in result.keys() and 'scope' in result.keys()):
if not 'audio_tts_post' in result['scope'].split(' '):
print ('please ensure has check the tts ability')
exit()
return result['access_token']
else:
print ('please overwrite the correct API_KEY and SECRET_KEY')
exit()


""" TOKEN end """

if __name__ == '__main__':

token = fetch_token()

tex = quote_plus(TEXT) # 此处TEXT需要两次urlencode

params = {'tok': token, 'tex': tex, 'per':PER,'cuid': "quickstart",
'lan': 'zh', 'ctp': 1} # lan ctp 固定参数

data = urlencode(params)

req = Request(TTS_URL, data.encode('utf-8'))
has_error = False
try:
f = urlopen(req)
result_str = f.read()

headers = dict((name.lower(), value) for name, value in f.headers.items())

has_error = ('content-type' not in headers.keys() or headers['content-type'].find('audio/') < 0)
except URLError as err:
print('http response http code : ' + str(err.code))
result_str = err.read()
has_error = True

import time
localtime = time.localtime(time.time())
time = str(time.strftime('%Y%m%d%H%M%S',time.localtime(time.time())))
save_file = "errorinfo.txt" if has_error else time+'.mp3'

with open(save_file, 'wb') as of:
of.write(result_str)

if has_error:
if (IS_PY3):
result_str = str(result_str, 'utf-8')
print("api error:" + result_str)

print("file saved as : " + save_file)

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

执刀人的工具库

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值