#### 接口路径:https://temp1.lingju.ai/httpapi/AudioChat.do
<table style="width:100%">
<tbody>
<tr height="28" style="font-weight:bold;">
<td height="28" width="130px" >名称</td>
<td colspan="3" >聊天接口</td>
</tr>
<tr height="28" style="font-weight:bold;">
<td height="28" >接口路径</td>
<td colspan="3" >https://temp1.lingju.ai/httpapi/AudioChat.do (请注意:体验环境,请勿用于生产环境。)</td>
</tr>
<tr height="28" style="font-weight:bold;">
<td height="28" >请求方式</td>
<td colspan="3" >post</td>
</tr>
</tbody>
</table>
#### http post请求示例:
~~~
post https://temp1.lingju.ai/httpapi/AudioChat.do
json格式串行化post上传,注意请求的header需添加 'Content-Type':'application/json;charset=UTF-8'
{
"accessToken":"xxxxxxxxxxxxxxxxxxxxxx",
"encodeData":"xxxxxxxxxx",
"voiceType":"xxxxxxxxxx",
"voiceFormat":"raw",
"speex_size":"61",
"needTTS":"false",
"lat":"23.12635",
"lng":"113.38776",
"city":"广州",
"position":"广东广州",
"data":[
{
"target":ID,
"list":[]
}
]
}
~~~
#### 请求参数说明:
<table style="width:100%">
<thead>
<tr height="28">
<th width="130px">参数</th>
<th width="100px">数据类型</th>
<th width="130px">可需</th>
<th colspan="2" >描述</th>
</tr>
</thead>
<tbody>
<tr height="23" style="height:17.25pt">
<td height="23" >accessToken</td>
<td >String</td>
<td>必填</td>
<td colspan="2" >分配给开发者的专属appkey,请妥善保管</td>
</tr>
<tr >
<td>encodeData</td>
<td>String</td>
<td>必填</td>
<td colspan="2">语音数据,要使用 base64 编码(采用 Python 语言时注意读取文件应该为 string 而不是 byte,以 byte 格式读取后要 decode()。编码后的数据不可带有回车换行符)。音频数据要小于600KB。</td>
</tr>
<tr >
<td>voiceType</td>
<td>String</td>
<td>必填</td>
<td colspan="2">识别音频的采样率,只支持8k和16k</td>
</tr>
<tr >
<td>voiceFormat</td>
<td>String</td>
<td>必填</td>
<td colspan="2">音频数据格式
raw:原生音频(支持单声道的pcm和wav)
speex:speex压缩后的音频(8k)
speex-wb:speex压缩后的音频(16k)<br请注意压缩前也必须是采样率16k或8k单声道的pcm。
</td>
</tr>
<tr >
<td>speex_size</td>
<td>int</td>
<td>否</td>
<td colspan="2">speex音频帧率,仅在speex音频时使用
1.由于服务端解压speex需要额外耗时,如果没有带宽等限制建议使用pcm格式。
2.请注意压缩前的原始音频文件,必须为采样率16K、16bits、单声道的PCM或WAV格式。
3.具体数值参考下方speex库压缩等级(quantity)关系表。</td>
</tr>
<tr >
<td>needTTS</td>
<td>boolean</td>
<td>否</td>
<td colspan="2">是否需要返回合成语音URL(true:返回 false:不返回)</td>
</tr>
<tr >
<td>speed</td>
<td>int</td>
<td>否</td>
<td colspan="2">语速:设置播放的语速,在0~9之间(支持浮点值),不传时默认为5</td>
</tr>
<tr >
<td>volume</td>
<td>int</td>
<td>否</td>
<td colspan="2">音量:设置语音的音量,在0~9之间(只支持整型值),不传时默认值为5</td>
</tr>
<tr >
<td>pitch</td>
<td>int</td>
<td>否</td>
<td colspan="2">音调:设置语音的音调,取值0-9,不传时默认为5中语调</td>
</tr>
<tr >
<td>audiotype</td>
<td>int</td>
<td>否</td>
<td colspan="2">音频种类:可不填,不填时默认为3,表示mp3格式
audiotype=4 :返回16K采样率的pcm格式
audiotype=5 :返回8K采样率的pcm格式
audiotype=6 :返回16K采样率的wav格式
audiotype=6&rate=1 :返回8K的wav格式
audiotype=7 :返回8k8bit的alaw格式文件
audiotype=8 :返回8k8bit的ulaw格式文件</td>
</tr>
<tr >
<td>voiceName</td>
<td>int</td>
<td>否</td>
<td colspan="2">发音人:1=标准女生;2=标准男生;3=女童;4=男童</td>
</tr>
<tr>
<td>city</td>
<td>String</td>
<td>否</td>
<td colspan="2">城市(该字段如果有参数,必须跟“lat”以及“lng”一起传才有效)</td>
</tr>
<tr>
<td>lat</td>
<td>double</td>
<td>否</td>
<td colspan="2">纬度</td>
</tr>
<tr>
<td>lng</td>
<td>double</td>
<td>否</td>
<td colspan="2">经度</td>
</tr>
<tr>
<td>position</td>
<td>String</td>
<td>否</td>
<td colspan="2">具体位置</td>
</tr>
<tr>
<td rowspan="3">data</td>
<td rowspan="3">JsonArray</td>
<td rowspan="3">否</td>
<td colspan="2">附带的JSON数据</td>
</tr>
<tr>
<td>target</td>
<td>目标对象id,int类型</td>
</tr>
<tr>
<td>list</td>
<td>目标对象集合,Json,json<a href="http://doc.lingju.ai/@ljsdk/android_sdk" target="_blank">结构请参照</a></td>
</tr>
</tbody>
</table>
#### speex库压缩等级(quantity)关系表:
<table style="width:100%">
<thead>
<tr height="28">
<th width="160px">quantity(压缩等级)</th>
<th width="40px">0</th>
<th width="40px">1</th>
<th width="40px">2</th>
<th width="40px">3</th>
<th width="40px">4</th>
<th width="40px">5</th>
<th width="40px">6</th>
<th width="40px">7</th>
<th width="40px">8</th>
<th width="40px">9</th>
<th width="40px">10</th>
</tr>
</thead>
<tbody>
<tr height="23" style="height:17.25pt">
<td height="23" >speex</td>
<td >7</td>
<td>11</td>
<td>16</td>
<td>21</td>
<td>21</td>
<td>29</td>
<td>29</td>
<td>39</td>
<td>39</td>
<td>47</td>
<td>63</td>
</tr>
<tr height="23" style="height:17.25pt">
<td height="23" >speex-wb</td>
<td >11</td>
<td>16</td>
<td>21</td>
<td>26</td>
<td>33</td>
<td>43</td>
<td>53</td>
<td>61</td>
<td>71</td>
<td>87</td>
<td>107</td>
</tr>
</tbody>
</table>
#### 接口返回JSON示例:
~~~
普通回复:
{
"answer":"广州今天天气预报说“大雨”,出门最好带上伞。",
"status":0
}
带指令的回复:
{
"answer":"{\"rtext\":\"好的\",\"outc\":0,
\"actions\":[{\"action\":\"QUERY\",
\"target\":{\"recyle\":0,\"id\":100,\"singer\":[\"周杰伦\"],\"release\":0,\"type\":\"歌曲\"},
\"hints\":{
\"success\":{\"text\":\"好的,为您播放周杰伦的歌\"},
\"failure\":{\"text\":\"抱歉,我找不到周杰伦的歌\"},
\"notsupport\":{\"text\":\"抱歉,我没办法播放歌曲\"}
}
},
{\"action\":\"SET\",
\"target\":{\"id\":300,\"origin\":\"QUERY\",\"control\":\"PLAY\",\"type\":\"AUDIO\"}}]}",
"status":0
}
带合成音的回复:
{
"answer":"{\"rtext\":\"好的\",\"outc\":0,
\"actions\":[{\"action\":\"QUERY\",
\"target\":{\"recyle\":0,\"id\":100,\"singer\":[\"周杰伦\"],\"release\":0,\"type\":\"歌曲\"},
\"hints\":{
\"success\":{\"text\":\"好的,为您播放周杰伦的歌\"},
\"failure\":{\"text\":\"抱歉,我找不到周杰伦的歌\"},
\"notsupport\":{\"text\":\"抱歉,我没办法播放歌曲\"}
}
},
{\"action\":\"SET\",
\"target\":{\"id\":300,\"origin\":\"QUERY\",\"control\":\"PLAY\",\"type\":\"AUDIO\"}}]}",
"audioURL":"https://xxxxxxxxxxxx",
"status":0
}
~~~
#### 接口返回说明:
~~~
Content-Type:application/json;charset=UTF-8
~~~
<table style="width:100%">
<thead>
<tr height="28" >
<th height="28" width="130px">属性名</th>
<th width="100px">数据类型</th>
<th>描述</th>
</tr>
</thead>
<tbody>
<tr height="23">
<td height="23" >status</td>
<td>int</td>
<td>状态码,0=成功,其它值则为错误码,请参考错误码表</td>
</tr>
<tr height="23">
<td height="23" >description</td>
<td >String</td>
<td>通常为空,出错时会有错误信息</td>
</tr>
<tr height="23">
<td height="23" >audioURL</td>
<td >String</td>
<td>合成语音数据播放链接</td>
</tr>
<tr >
<td>answer</td>
<td >String</td>
<td>普遍的回复文本或json结构的字符串文本,若为json文本,请参考<a href="http://doc.lingju.ai/@ljsdk/android_sdk">指令说明文档</a>解析,若仅用于普通聊天,建议忽略json文本,以"暂不知道该功能"作为回复。</td>
</tr>
</tbody></table>