ex
Fork of mbed-os-example-mbed5-blinky by
dumi_doc-master/doc/directives/SpeechSynthesizer.md@44:c1d8923072ba, 2017-07-18 (annotated)
- Committer:
- TMBOY
- Date:
- Tue Jul 18 16:27:22 2017 +0800
- Revision:
- 44:c1d8923072ba
?
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| TMBOY | 44:c1d8923072ba | 1 | # SpeechSynthesizer 语音合成 |
| TMBOY | 44:c1d8923072ba | 2 | |
| TMBOY | 44:c1d8923072ba | 3 | ## Table of Contents |
| TMBOY | 44:c1d8923072ba | 4 | |
| TMBOY | 44:c1d8923072ba | 5 | |
| TMBOY | 44:c1d8923072ba | 6 | * [SpeechSynthesizer 语音合成](#speechsynthesizer-语音合成) |
| TMBOY | 44:c1d8923072ba | 7 | * [Table of Contents](#table-of-contents) |
| TMBOY | 44:c1d8923072ba | 8 | * [Speak指令](#speak指令) |
| TMBOY | 44:c1d8923072ba | 9 | * [Stop指令](#stop指令) |
| TMBOY | 44:c1d8923072ba | 10 | * [SpeechStarted事件](#speechstarted事件) |
| TMBOY | 44:c1d8923072ba | 11 | * [SpeechFinished事件](#speechfinished事件) |
| TMBOY | 44:c1d8923072ba | 12 | * [SpeechStopped事件](#speechstopped事件) |
| TMBOY | 44:c1d8923072ba | 13 | * [SpeechSynthesizer状态上报](#speechsynthesizer状态上报) |
| TMBOY | 44:c1d8923072ba | 14 | |
| TMBOY | 44:c1d8923072ba | 15 | |
| TMBOY | 44:c1d8923072ba | 16 | ## Speak指令 |
| TMBOY | 44:c1d8923072ba | 17 | 需要扬声器语音播报的时候,返回这个指令。客户端收到这个指令后,需要把内容tts播报出来。听新闻返回的就是一个Speak指令。 |
| TMBOY | 44:c1d8923072ba | 18 | ```json |
| TMBOY | 44:c1d8923072ba | 19 | { |
| TMBOY | 44:c1d8923072ba | 20 | "header": { |
| TMBOY | 44:c1d8923072ba | 21 | "namespace": "SpeechSynthesizer", |
| TMBOY | 44:c1d8923072ba | 22 | "name": "Speak", |
| TMBOY | 44:c1d8923072ba | 23 | "message_id": "message_id-1344" |
| TMBOY | 44:c1d8923072ba | 24 | }, |
| TMBOY | 44:c1d8923072ba | 25 | "payload": { |
| TMBOY | 44:c1d8923072ba | 26 | "channel":"Content", //可选,标志内容的优先级,默认为Dialog |
| TMBOY | 44:c1d8923072ba | 27 | "token": "156", |
| TMBOY | 44:c1d8923072ba | 28 | "type": "{{Text/SSML}}", |
| TMBOY | 44:c1d8923072ba | 29 | "content": ["xxxx1", "xxxx2"], |
| TMBOY | 44:c1d8923072ba | 30 | "speak_behavior": "REPLACE_ALL", |
| TMBOY | 44:c1d8923072ba | 31 | "should_get_next_speech": true |
| TMBOY | 44:c1d8923072ba | 32 | } |
| TMBOY | 44:c1d8923072ba | 33 | } |
| TMBOY | 44:c1d8923072ba | 34 | ``` |
| TMBOY | 44:c1d8923072ba | 35 | 参数 | 描述 | 类型 | 必须 |
| TMBOY | 44:c1d8923072ba | 36 | --- | --- | --- | --- |
| TMBOY | 44:c1d8923072ba | 37 | token | tts的token | string | 是 |
| TMBOY | 44:c1d8923072ba | 38 | type | TTS类型,type字段的两种取值:Text和SSML| string | 是 |
| TMBOY | 44:c1d8923072ba | 39 | content | 播报内容,content字段固定为数组,即使只有一条内容,也使用数组。| array | 是 |
| TMBOY | 44:c1d8923072ba | 40 | speak_behavior | 播报模式 REPLACE_ALL: 清空列表,立即播报;ENQUEUE: 把指令关联的tts添加到列表末尾,下一条预取的时候使用它 | string | 是 |
| TMBOY | 44:c1d8923072ba | 41 | channel | 播报内容的分类和优先级,取值:Dialog/Content/Alerts,请参考[directives的交互设计参考](../api/directives_design.md) | string | 否,默认为Dialog |
| TMBOY | 44:c1d8923072ba | 42 | |
| TMBOY | 44:c1d8923072ba | 43 | ## Stop指令 |
| TMBOY | 44:c1d8923072ba | 44 | ```json |
| TMBOY | 44:c1d8923072ba | 45 | { |
| TMBOY | 44:c1d8923072ba | 46 | "header": { |
| TMBOY | 44:c1d8923072ba | 47 | "namespace": "SpeechSynthesizer", |
| TMBOY | 44:c1d8923072ba | 48 | "name": "Stop", |
| TMBOY | 44:c1d8923072ba | 49 | "message_id": "message_id-1344" |
| TMBOY | 44:c1d8923072ba | 50 | }, |
| TMBOY | 44:c1d8923072ba | 51 | "payload": { |
| TMBOY | 44:c1d8923072ba | 52 | } |
| TMBOY | 44:c1d8923072ba | 53 | } |
| TMBOY | 44:c1d8923072ba | 54 | ``` |
| TMBOY | 44:c1d8923072ba | 55 | |
| TMBOY | 44:c1d8923072ba | 56 | ## SpeechStarted事件 |
| TMBOY | 44:c1d8923072ba | 57 | 收到Speak指令后,开始播报之前,上报此事件。 |
| TMBOY | 44:c1d8923072ba | 58 | ```json |
| TMBOY | 44:c1d8923072ba | 59 | { |
| TMBOY | 44:c1d8923072ba | 60 | "device_event": { |
| TMBOY | 44:c1d8923072ba | 61 | "header": { |
| TMBOY | 44:c1d8923072ba | 62 | "namespace": "SpeechSynthesizer", |
| TMBOY | 44:c1d8923072ba | 63 | "name": "SpeechStarted", |
| TMBOY | 44:c1d8923072ba | 64 | "message_id": "message_id-1344" |
| TMBOY | 44:c1d8923072ba | 65 | }, |
| TMBOY | 44:c1d8923072ba | 66 | "payload": { |
| TMBOY | 44:c1d8923072ba | 67 | "token": "156", |
| TMBOY | 44:c1d8923072ba | 68 | } |
| TMBOY | 44:c1d8923072ba | 69 | } |
| TMBOY | 44:c1d8923072ba | 70 | } |
| TMBOY | 44:c1d8923072ba | 71 | ``` |
| TMBOY | 44:c1d8923072ba | 72 | |
| TMBOY | 44:c1d8923072ba | 73 | ## SpeechFinished事件 |
| TMBOY | 44:c1d8923072ba | 74 | 播报完毕后,上报此事件。 |
| TMBOY | 44:c1d8923072ba | 75 | ```json |
| TMBOY | 44:c1d8923072ba | 76 | { |
| TMBOY | 44:c1d8923072ba | 77 | "device_event": { |
| TMBOY | 44:c1d8923072ba | 78 | "header": { |
| TMBOY | 44:c1d8923072ba | 79 | "namespace": "SpeechSynthesizer", |
| TMBOY | 44:c1d8923072ba | 80 | "name": "SpeechFinished", |
| TMBOY | 44:c1d8923072ba | 81 | "message_id": "message_id-1344" |
| TMBOY | 44:c1d8923072ba | 82 | }, |
| TMBOY | 44:c1d8923072ba | 83 | "payload": { |
| TMBOY | 44:c1d8923072ba | 84 | "token": "156" |
| TMBOY | 44:c1d8923072ba | 85 | } |
| TMBOY | 44:c1d8923072ba | 86 | } |
| TMBOY | 44:c1d8923072ba | 87 | } |
| TMBOY | 44:c1d8923072ba | 88 | ``` |
| TMBOY | 44:c1d8923072ba | 89 | |
| TMBOY | 44:c1d8923072ba | 90 | ## SpeechStopped事件 |
| TMBOY | 44:c1d8923072ba | 91 | 用户说"暂停播放"、 "停止播放"后,会收到Stop指令,客户端执行完Stop指令后,即暂停播放后,需要上报此事件,云端会保存断点,供下一次继续播放使用。 |
| TMBOY | 44:c1d8923072ba | 92 | ```json |
| TMBOY | 44:c1d8923072ba | 93 | { |
| TMBOY | 44:c1d8923072ba | 94 | "device_event": { |
| TMBOY | 44:c1d8923072ba | 95 | "header": { |
| TMBOY | 44:c1d8923072ba | 96 | "namespace": "SpeechSynthesizer", |
| TMBOY | 44:c1d8923072ba | 97 | "name": "SpeechStopped", |
| TMBOY | 44:c1d8923072ba | 98 | "message_id": "message_id-1344" |
| TMBOY | 44:c1d8923072ba | 99 | }, |
| TMBOY | 44:c1d8923072ba | 100 | "payload": { |
| TMBOY | 44:c1d8923072ba | 101 | "token": "156", |
| TMBOY | 44:c1d8923072ba | 102 | "offset_ms": 10000 |
| TMBOY | 44:c1d8923072ba | 103 | } |
| TMBOY | 44:c1d8923072ba | 104 | } |
| TMBOY | 44:c1d8923072ba | 105 | } |
| TMBOY | 44:c1d8923072ba | 106 | ``` |
| TMBOY | 44:c1d8923072ba | 107 | |
| TMBOY | 44:c1d8923072ba | 108 | ## SpeechSynthesizer状态上报 |
| TMBOY | 44:c1d8923072ba | 109 | |
| TMBOY | 44:c1d8923072ba | 110 | 正常请求中也需要上报SpeechSynthesizer当前的状态 |
| TMBOY | 44:c1d8923072ba | 111 | |
| TMBOY | 44:c1d8923072ba | 112 | ```json |
| TMBOY | 44:c1d8923072ba | 113 | "device_status":{ |
| TMBOY | 44:c1d8923072ba | 114 | "SpeechSynthesizer":{ |
| TMBOY | 44:c1d8923072ba | 115 | "token":"xxx",//正在播放的音频流id |
| TMBOY | 44:c1d8923072ba | 116 | "offset_ms":20000,//播放到多少ms了 |
| TMBOY | 44:c1d8923072ba | 117 | "player_activity":"PLAYING / FINISHED" |
| TMBOY | 44:c1d8923072ba | 118 | } |
| TMBOY | 44:c1d8923072ba | 119 | } |
| TMBOY | 44:c1d8923072ba | 120 | ``` |
