如何用代码调用
更新时间:2023-01-13
编写一个示例程序
有准备工作的API KEY 以及 Secret KEY,的数据,并且领取了免费测试额度,我们就可以写一个示例代码调用百度AI开放平台的语音合成能力
准备开发环境
大姚选择用python来快速搭建一个原型,那我们就安装以下python。可以参考下表列出的不同操作系统的安装方法进行安装。
Python的官方下载地址:下载python
Windows 快速测试包
windows平台的用户如果对上述的python安装感到困难,可以下载我们的一键测试包,下载地址:windows测试包。
解压zip文件后,双击run.bat即可测试。
编写代码
新建一个 main.py
粘贴以下内容,不要忘记替换你的 API_KEY 以及 SECRET_KEY:
Plain Text
1# coding=utf-8
2
3import sys
4import json
5
6# 保证兼容python2以及python3
7IS_PY3 = sys.version_info.major == 3
8if IS_PY3:
9 from urllib.request import urlopen
10 from urllib.request import Request
11 from urllib.error import URLError
12 from urllib.parse import urlencode
13 from urllib.parse import quote_plus
14else:
15 import urllib2
16 from urllib import quote_plus
17 from urllib2 import urlopen
18 from urllib2 import Request
19 from urllib2 import URLError
20 from urllib import urlencode
21
22# 替换你的 API_KEY
23API_KEY = 'nu9r2plGFi3s1ugayDPSM6Mk'
24
25# 替换你的 SECRET_KEY
26SECRET_KEY = 'G62YGnq84eKTqu0mBgvdpmC6gNBzHdai'
27
28# 大姚的订单信息内容文本
29TEXT = "三分钟前,由北京市顺义区二经路与二纬路交汇处北侧,北京首都国际机场T3航站楼 去往 东城区北三环东路36号喜来登大酒店(北京金隅店)"
30
31
32
33TTS_URL = 'http://tsn.baidu.com/text2audio'
34
35""" TOKEN start """
36
37TOKEN_URL = 'http://openapi.baidu.com/oauth/2.0/token'
38
39
40"""
41 获取token
42"""
43def fetch_token():
44 params = {'grant_type': 'client_credentials',
45 'client_id': API_KEY,
46 'client_secret': SECRET_KEY}
47 post_data = urlencode(params)
48 if (IS_PY3):
49 post_data = post_data.encode('utf-8')
50 req = Request(TOKEN_URL, post_data)
51 try:
52 f = urlopen(req, timeout=5)
53 result_str = f.read()
54 except URLError as err:
55 print('token http response http code : ' + str(err.code))
56 result_str = err.read()
57 if (IS_PY3):
58 result_str = result_str.decode()
59
60
61 result = json.loads(result_str)
62
63 if ('access_token' in result.keys() and 'scope' in result.keys()):
64 if not 'audio_tts_post' in result['scope'].split(' '):
65 print ('please ensure has check the tts ability')
66 exit()
67 return result['access_token']
68 else:
69 print ('please overwrite the correct API_KEY and SECRET_KEY')
70 exit()
71
72
73""" TOKEN end """
74
75if __name__ == '__main__':
76
77 token = fetch_token()
78
79 tex = quote_plus(TEXT) # 此处TEXT需要两次urlencode
80
81 params = {'tok': token, 'tex': tex, 'cuid': "quickstart",
82 'lan': 'zh', 'ctp': 1} # lan ctp 固定参数
83
84 data = urlencode(params)
85
86 req = Request(TTS_URL, data.encode('utf-8'))
87 has_error = False
88 try:
89 f = urlopen(req)
90 result_str = f.read()
91
92 headers = dict((name.lower(), value) for name, value in f.headers.items())
93
94 has_error = ('content-type' not in headers.keys() or headers['content-type'].find('audio/') < 0)
95 except URLError as err:
96 print('http response http code : ' + str(err.code))
97 result_str = err.read()
98 has_error = True
99
100 save_file = "error.txt" if has_error else u'大姚的订单信息.mp3'
101
102 with open(save_file, 'wb') as of:
103 of.write(result_str)
104
105 if has_error:
106 if (IS_PY3):
107 result_str = str(result_str, 'utf-8')
108 print("tts api error:" + result_str)
109
110 print("file saved as : " + save_file)
运行代码
在命令行中运行python main.py
结果
代码运行成功后,在main.py的同级目录中会产生一个 大姚的订单信息.mp3 文件,大姚打开一听觉得这就是他想要的效果,让我们一起来听听看:
更多示例代码
更多示例代码可到控制台内API在线调试页面获取:API在线调试