Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
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 | ``` |
