首页 > 代码库 > 微信学习总结 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输入参数不正确
502token验证失败
503合成后端错误

   

 

 

 

资料参考:

百度语音合成官方文档

http://yuyin.baidu.com/docs/tts/135

 

微信学习总结 15 百度语音合成