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

admin
🌐 经济型:买域名、轻量云服务器、用途:游戏 网站等 《腾讯云》特点:特价机便宜 适合初学者用 点我优惠购买
🚀 拓展型:买域名、轻量云服务器、用途:游戏 网站等 《阿里云》特点:中档服务器便宜 域名备案事多 点我优惠购买
🛡️ 稳定型:买域名、轻量云服务器、用途:游戏 网站等 《西部数码》 特点:比上两家略贵但是稳定性超好事也少 点我优惠购买

温馨提示:这篇文章已超过516天没有更新,请注意相关的内容是否还可用!

准备工作

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)


文章版权声明:除非注明,否则均为执刀人的工具库原创文章,转载或复制请以超链接形式并注明出处。

发表评论

快捷回复: 表情:
AddoilApplauseBadlaughBombCoffeeFabulousFacepalmFecesFrownHeyhaInsidiousKeepFightingNoProbPigHeadShockedSinistersmileSlapSocialSweatTolaughWatermelonWittyWowYeahYellowdog
验证码
评论列表 (暂无评论,224人围观)

还没有评论,来说两句吧...

目录[+]

取消
微信二维码
微信二维码
支付宝二维码