1.SYN6288簡介
SYN6288-A語音合成模塊是一款性價比更高,效果更自然的一款中高端語音合技術 。 SYN6288-A通過異步串口接收待合成的文本,實現文本到聲音(TTS)的轉換。
國內首款語音合成評估板SYN6288-A的推出繼承了OSYNO6188-A模塊的優秀特點:最小體積,硬件接口簡單,極高的性價比;除此之外,SYN6288-A文本識別更智能,語音合成更自然,語音合成效果和智能識別效果大幅度提高,是一款面向中高端應用領域的語音合技術。
1.1產品應用范圍
◆ 車載信息終端語音播報,車載調度,車載導航
◆ 公交報站器,考勤機
◆ 排隊叫號機,收銀收費機
◆ 自動售貨機,信息機,POS機
◆ 智能玩具,智能手表
◆ 電動自行車
◆ 語音電子書,彩屏故事書,語音電子詞典,語音電子導游
◆ 短消息播放,新聞播放
◆ 電子地圖
- 硬件接口:
引腳 |
說明 |
TXD | 發送數據腳PA3 |
RXD | 接收數據腳PA2 |
BUSY | 忙信號檢測腳PC5,高電平表示忙 |
1.2 通訊協議
SYN6288模塊采用串口通訊方式,數據格式如下:
默認波特率9600,1位起始位、8位數據位、1位停止位、無校驗位、無硬件流控制。
1.2.1 命令幀格式
芯片支持以下命令幀格式: “幀頭FD +數據區長度+數據區” 格式。(最大206個字節) 上位機發送給SYN6288-A模塊的所有命令和數據都需要用“幀”的方式進行封裝后傳輸。
- 數據長度:命令字+命令參數+數據內容+校驗值;
- 校驗值:從幀頭開始的全部字節數;
- 同一幀數據中,每個字節直接發送間隔不能超過8ms,數據幀直接發送間隔必須超過8ms;
- 默認初始波特率為9600bps;若需改變波特率,在發送完設置波特率命令幀后需間隔16毫秒再發送其它命令幀。
- 9600bps、19200bps兩種波特率通訊傳輸都非常穩定(不管芯片在合成播音還是空閑)。
- 當模塊正在合成文本的時候,如果又接收到一幀有效的合成命令幀,芯片會立即停止當前正在合成的文本,轉而合成新收到的文本。
- 待發送文本長度必須小于等于200個字節。實際發送的長度大于200字節,芯片會報接收失敗。
1.2.2 控制命令說明
1.2.3 數據幀示例
(1)無背景音示例
(2)帶背景音示例
(3)音量設置
(4)波特率設置
(5)停止合成命令
(5)暫停合成命令
(6)恢復合成命令
1.2.4 文本控制標記
-
說明:
①所有的控制標識均為半角字符。
②控制標識需要按照語音合成命令的格式發送,特殊控制標記作為文本進行合成, 即合成命令是“幀頭 + 數據區長度 + 合成命令字 + 文本編碼格式 + 特殊控制標記文本” 的格式。
③控制標識為全局控制標識,也就是只要用了一次,在不對芯片復位或者斷電的條件下,其后發送給芯片的所有文本都會處于它的控制之下,除非用相應的 [d] 恢復默認設置。
④當芯片掉電或是復位后,芯片將恢復到所有的默認值,原來的設置過的標識失去了作用,需要重新設置。
⑤不符合以上可識別的“控制標識”的或者格式不對的一律按普通的字符和數字處理。
1.2.5 提示音效
芯片中提供了25段的聲音提示音,可以依據使用場合選用作為信息提示音。下面列表中是目前芯片的內置提示音的名稱及聲音類型:
1.2.6 和弦提示音列表
芯片中提供了23段和弦音樂作為提示音,可以廣泛的使用在公共信息播報的場合,下面列表中是目前芯片的內置提示音的名稱和播放長度。
和弦鈴聲既可作和弦鈴聲,也是背景音樂的素材
注意:提示音在使用上沒有特殊性,與合成普通文本的合成命令相同。但是,需要注意的是:提示音名稱前面或后面緊接著是英文字母時,需要使用標點符號、空格、回車等與其他字母隔開,芯片才能夠自動識別。 例如:發送文本“sounda,hello!”,sounda 就可以合成對應的短信提示音,但是如果發送的文 本”soundahello!”,sounda就不能合成提示音,而是直接朗讀成字母“S-O-U-N-D-A”。
1.3 數據幀組合示例
/*
函數功能:SYN6288語音播報(單條語音不超過206字節)
形參:str --播放語音
cmd --命令(0~15)0為無背景,1~15為背景音
vol --音量(0~16)0為靜音,16為最大音量
公司:北京萬邦易嵌
作者:IT_阿水
*/
void SYN6288_SendData(uint8_t *str,int cmd,int vol)
{
uint8_t dat_xor=0;
uint8_t buffer[206];
uint16_t i=0;
char temp[10];
int j=0;
int str_len=0;
SYN6288_GetStat();
Delay_Ms(10);
/*音量設置*/
str_len=snprintf(temp,sizeof(temp),"[v%d]",vol&0x1f);
uint16_t len=strlen((char *)str);//發送是內容長度
str_len+=len;
str_len+=3;//加上命令字,命令參數和校驗值
buffer[i]=0xFD;//幀頭
dat_xor^=buffer[i++];
/*數據長度,兩個字節,,高位在前*/
buffer[i]=(str_len>>8)&0xff;
dat_xor^=buffer[i++];
buffer[i]=str_len&0xff;
dat_xor^=buffer[i++];
buffer[i]=0x01;//語音合成播放命令
dat_xor^=buffer[i++];
buffer[i]=((cmd&0xf)<<3)|0;//命令參數
dat_xor^=buffer[i++];
j=0;
while(temp[j]!='?')
{
buffer[i++]=temp[j];
dat_xor^=temp[j++];
}
for(j=0;j;j++)>
-
物聯網
+關注
關注
2914文章
44939瀏覽量
377093 -
STM32
+關注
關注
2272文章
10924瀏覽量
357603 -
串口
+關注
關注
14文章
1558瀏覽量
77070 -
開發板
+關注
關注
25文章
5121瀏覽量
98217 -
語音播報
+關注
關注
1文章
28瀏覽量
14591
發布評論請先 登錄
相關推薦
評論