大家好,我是程序員小哈。
前幾天有個球友在用一個語音模塊,遇到了點困難,為了方便調(diào)試,小哈哥也買了兩個一起玩了一下。
今天小哈哥就來簡單分享一下這個模塊。
模塊概述
- DY-SV17F 語音模塊,包括IO 分段觸發(fā),UART 串口控制, ONE_line 單總線控制,標(biāo)準(zhǔn) MP3 等 7 種工作模式;板載 5W D 類功放,可直接驅(qū)動 4Ω, 3~5W 喇叭;支持 MP3,WAV 解碼格式;板載4MBte flash 存儲,可通過 USB 數(shù)據(jù)線連接模塊上的MicroUSB接口,電腦可以將模塊識別為一個U盤,打開此存儲更新音頻文件即可。
工作模式配置
硬件連接
原理圖
為了測試方便,各位也可以畫一個PCB板,這樣就可以避免使用一堆杜邦線進(jìn)行連接,也可以避免調(diào)試過程中遇到一些不必要的問題,底板的原理圖可以參考下圖所示。
因為我們要選擇串口模式,所以實際使用過程中,CON1、CON2接地,CON3接高電平。
CON3/BUSY 引腳,上電 30mS 內(nèi)作為模式配置引腳 3,30mS 后作為 BUSY 信號輸出,播放曲目時,CON3輸出高電平(3.3V),播放結(jié)束輸出低電平(0V)。
注意:上述CON3引腳狀態(tài),我實際測試結(jié)果與手冊中描述相反,此處自己使用時進(jìn)行一下確認(rèn)。
資源文件
要想實現(xiàn)語音播放當(dāng)前時間,我們首先要找到或者制作一些基本語音的音頻文件,如果想制作音頻文件素材,可以用下面網(wǎng)址制作:
https://www.coder.work/text2audio
準(zhǔn)備好組合播放的音頻素材文件,將其放置在 ZH 文件夾下,曲目名要求固定兩個字符,為了控制方便,我們選擇以兩位數(shù)字的形式命名文件名,本次實例的音頻文件素材如下:
素材的語音內(nèi)容具體如下:
文件名 | 語音 |
---|---|
00.mp3 | 零 |
01.mp3 | 一 |
02.mp3 | 二 |
03.mp3 | 三 |
04.mp3 | 四 |
05.mp3 | 五 |
06.mp3 | 六 |
07.mp3 | 七 |
08.mp3 | 八 |
09.mp3 | 九 |
10.mp3 | 十 |
11.mp3 | 現(xiàn)在時間是 |
12.mp3 | 點 |
13.mp3 | 分 |
14.mp3 | 秒 |
協(xié)議
串口通信,波特率為9600,數(shù)據(jù)位:8,停止位1位,校驗位N。
示例 | 含義 | 備注 |
---|---|---|
AA 01 00 AB | 查詢播放狀態(tài) | AA 01 01 播放狀態(tài) 校驗 |
AA 02 00 AC | 從頭開始播放當(dāng)前曲目 | |
AA 03 00 AD | 暫停 | 無返回 |
AA 04 00 AE | 停止 | 無返回 |
AA 05 00 AF | 上一曲 | 無返回 |
AA 06 00 B0 | 下一曲 | 無返回 |
AA 07 02 曲目高 曲目低 SM | 指定曲目 | 無返回,曲目序號由存儲順序決定。 |
AA 0C 00 B6 | 查詢總曲目 | 返回:AA 0C 02 總曲目高 總曲目低 校驗 |
AA 0D 00 B7 | 查詢當(dāng)前曲目 | AA 0D 02 00 08 C1 |
AA 10 00 BA | 結(jié)束播放 | |
AA 13 01 VOL SM | 音量設(shè)置 | 無返回,例如:AA 13 01 14 D2 設(shè)置音量為 20 級 |
AA 14 00 BE | 音量加 | 無返回 |
AA 15 00 BF | 音量減 | 無返回 |
AA 1B 長度 曲目 1 名稱高字節(jié),曲目名稱 1 低字節(jié)..... 曲目 n 名稱高字節(jié), 曲目 n 名稱低字節(jié) SM | 組合播放 | 無返回,例如:AA 1B 04 30 31 30 32 8C,文件名為“01”、“02”歌曲組合播放。 文件名播放方式,不受拷貝順序限制。 |
AA 1C 00 C6 | 結(jié)束組合播報 | 無返回 |
AA 25 00 CF | 開啟播放時間發(fā)送 | 返回:AA 25 03 時 分 秒 SM |
AA 25 03 01 02 03 D8 | ||
AA 26 00 D0 | 關(guān)閉播報時間發(fā)送 |
查詢模塊當(dāng)前播放狀態(tài)的串口指令,調(diào)試過程如截圖所示:
模塊的串口協(xié)議有很多,因為要播放實時時間,這個是一個變化的量,使用模塊自帶的組合播放功能,可以方便的實現(xiàn)實時時間的播報。
AA 1B 長度 曲目1名稱高字節(jié) 曲目名稱1低字節(jié) ..... 曲目n名稱高字節(jié) 曲目n名稱低字節(jié) SM
例如:串口發(fā)送 AA 1B 04 30 31 30 32 8C,模塊會將文件名為“01.mp3”、“02.mp3”的歌曲進(jìn)行組合播放。
結(jié)果展示
要進(jìn)行組合播放,無非將要組合的文件名進(jìn)行拼接,將這些內(nèi)容按照組合播放的通信協(xié)議,組成一個字符數(shù)組進(jìn)行發(fā)送即可,代碼比較簡單,大家有需要的,直接去公眾號后臺回復(fù):語音播報實時時間 獲取代碼查看吧。
效果趕不上專業(yè)的TTS模塊,此方案勝在性價比高。
今天的文章到這里就結(jié)束了,希望對你有幫助,我們下期見。