首页 > 代码库 > 微信学习总结 15 百度语音合成
微信学习总结 15 百度语音合成
百度语音合成通过REST API的方式给开发者提供一个通用的HTTP接口,基于该接口,开发者可以轻松的获取语音合成能力,本文档描述了使用语音合成服务REST API的方法。
对本文中将提到的名词约定如下:
语音合成:也被称为文本转换技术(TTS),它是将计算机自己产生的、或外部输入的文字信息转变为可以听得懂的、流利的口语输出的技术。
应用程序:在开发中调用了API、具有语音合成功能的产品线产品。
功能介绍
REST API支持对一段文本的合成,其中对于文本格式以及参数有一定的要求。请按照文档中描述进行相应请求操作。
1 注册百度开发者
具体参考:http://yuyin.baidu.com/docs/tts/135
2 获得访问秘钥(AccessToken)
从管理控制台进入创建的应用,如下图所示,API Key(client_id)和Secret Key(client_secret)即显示于其中, ID即为应用id(appid)。
根据百度OAuth的Client Credentials授权方式获取access_token。百度OAuth的Client Credentials和其他授权方式的说明见百度OAuth介绍的“百度支持的OAuth授权”部分。
其中,grant_type的值固定为client_credentials,client_id即为(3)中截图所示的 API Key的值,client_secret即为截图所示的Secret Key的值。更为详细的介绍请参见Client Credentials授权说明。响应如下所示,其中access_token字段即为请求REST API所需的令牌, access_token有效期一般为一个月,开发者需要对access_token,进行有效性判断,过期需重新申请access_token。请求成功返回的JSON数据格式为:
{ "access_token": "24.ec37046714941b2a78af9b3e1ef06580.2592000.1492874149.282335-9434283", "session_key": "9mzdXqbP+NaF3yTrfmDrvxb4fpvsAdo5lXl+HstDj5C2IXfPJnq2M/0oEmhxRFEuaEYH5y5fYmnJbT5GPWPqtm1zgboG", "scope": "public audio_voice_assistant_get audio_tts_post wise_adapt lebo_resource_base lightservice_public hetu_basic lightcms_map_poi kaidian_kaidian wangrantest_test wangrantest_test1 bnstest_test1 bnstest_test2 ApsMisTest_Test67439650 vis-classify_flower", "refresh_token": "25.8a27c3ddb074c21e6cefa86d1927845f.315360000.1805642149.282335-9434283", "session_secret": "909d30289c56e58e0d7f4f53fb189a26", "expires_in": 2592000}
获得响应值对应的"access_token"对应的值"24.ec37046714941b2a78af9b3e1ef06580.2592000.1492874149.282335-9434283",
以下是实现请求accessToken的核心代码:
public static String queryAccessToken(){ String requestUrl = null; StringBuffer temp = new StringBuffer(); temp.append("https://openapi.baidu.com/oauth/2.0/token"+ "?grant_type=client_credentials"); temp.append("&client_id={client_id}"); temp.append("&client_secret={client_secret}"); requestUrl = temp.toString().replace("{client_id}", API_Key).replace("{client_secret}", SecretKey); String accessTokenRstStr =httpRequest(requestUrl); JSONObject resultJsonObject = (JSONObject) JSONObject.parse(accessTokenRstStr); String accessToken = resultJsonObject.getString("access_token"); return accessToken; }
3 API请求方式说明
1)文本上传模式
以下是上传参数说明。
将所有的参数都填写到URL地址中,可以通过发送GET请百度语音合成。
http://tsn.baidu.com/text2audio?tex=***&lan=zh&cuid=***&ctp=1&tok=***
也可以将文本以及其他参数写入到body里面,利用表单的方式将参数传递到服务端。调用地址为 http://tsn.baidu.com/text2audio , 所有的参数都在body中。以下是通过GET方式来获取百度语音合成服务。
注意:
不论是将参数放到URL地址中,还是利用表单的方式放入到http body中,参数都需要经过两次 URLENCODE 操作。如果是直接在浏览器地址栏输入则不需要。核心代码如下:
String inputStr = URLEncoder.encode(URLEncoder.encode("核心管理层更新带来的直接结果是百度内部领域、资源、利益的重新划分,结果就是利益相关人的出局","UTF-8"),"UTF-8");
错误实例为:
{"err_no":500,"err_msg":"notsupport.","sn":"abcdefgh","idx":1}
错误码解释
错误码 | 含义 |
---|---|
500 | 不支持输入 |
501 | 输入参数不正确 |
502 | token验证失败 |
503 | 合成后端错误 |
资料参考:
百度语音合成官方文档
http://yuyin.baidu.com/docs/tts/135
微信学习总结 15 百度语音合成