# TTS播放器
# 协议类型
消息类型 | 名称 | 必须实现 |
---|---|---|
directive | voice_out | 是 |
event | tts.text_in | 否 |
# context
"unios_context": {
....
"tts_player": {
"version": "1.0"
},
...
}
1
2
3
4
5
6
7
2
3
4
5
6
7
参数 | 类型 | 说明 | 必填 |
---|---|---|---|
version | String | 模块版本,现在是1.0 | 是 |
# directive
TTS播放
当接收到TTS播放指令的时候,需要使用合适的播放器来播放里面的内容
回复示例
{
"unios_directives": [
...,
{
"header": {
"name": "tts_player.voice_out"
},
"payload": {
"url": "http://music.unios.cn/tts/sadf.mp3?token=xxxxxxxx",
"behavior": "SERIAL",
"metadata": {
"text": "xxxx"
}
}
}
]
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
参数 | 类型 | 说明 | 必填 |
---|---|---|---|
behavior | String | - SERIAL:串行TTS,执行时阻塞,播完TTS才可以执行下一个指令 - PARALLEL:并行,执行不阻塞,开始播放TTS时可以同时执行后续指令。若该字段未出现,默认为SERIAL | 是 |
url | String | TTS播放地址(mp3格式) | 是 |
metadata.text | String | TTS音频的原始文本 | 是 |
举例
当云端要通过TTS回复用户的请求时,收到的unios_directive如下:
{
"unios_directives": [
...,
{
"header": {
"name": "tts_player.voice_out"
},
"payload": {
"url": "http://tts.unios.cn/tts/sadf.mp3?token=xxxxxxxx",
"behavior": "SERIAL",
"metadata": {
"text": "北京市今天晴,零下4度到10度,和昨天的温度差不多,空气质量优"
}
}
}
]
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
说明
- 当收到SERIAL的TTS时,代表这个TTS需要阻塞其他的指令,需要在这个TTS播放完成后,才可以执行后续的指令。
- 当收到PARALLEL的TTS时,代表这个TTS不需要阻塞,当开始播放这个TTS后,就可以开始执行后续的指令。
# event
文本合成
有的时候,设备需要生成TTS来回复用户,此时设备可以发送文本请求,UniOS 将会把文本合成音频,然后通过unios_directive返回给一条能够播放的TTS。
请求示例
{
"unios_header": {
...
},
"unios_context": {
...
},
"unios_event": {
"header": {
"name": "tts_player.tts.text_in",
"message_id": "xxxxxxxx"
},
"payload": {
"text": "fdasfdsalkjfdsakjfjffdsafdsa"
}
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
参数 | 类型 | 说明 | 必填 |
---|---|---|---|
unios_header | Object | 构建的通用 unios_header | 是 |
unios_context | Object | 构建的通用 unios_context | 是 |
text | String | 需要合成的文本 | 是 |