找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4814|回復(fù): 30
收起左側(cè)

【Arduino】168種傳感器系列實驗(138)---TTS文本轉(zhuǎn)語音模塊

[復(fù)制鏈接]
ID:513258 發(fā)表于 2020-2-5 08:28 | 顯示全部樓層 |閱讀模式
37款傳感器與模塊的提法,在網(wǎng)絡(luò)上廣泛流傳,其實Arduino能夠兼容的傳感器模塊肯定是不止37種的。鑒于本人手頭積累了一些傳感器和模塊,依照實踐出真知(一定要動手做)的理念,以學(xué)習(xí)和交流為目的,這里準(zhǔn)備逐一動手試試做實驗,不管成功與否,都會記錄下來---小小的進(jìn)步或是搞不定的問題,希望能夠拋磚引玉。

【Arduino】168種傳感器模塊系列實驗(資料+代碼+圖形+仿真)
實驗一百三十八:中文TTS文本轉(zhuǎn)語音合成模塊 替代SYN6288和XFS5152

0.jpg


回復(fù)

使用道具 舉報

ID:513258 發(fā)表于 2020-2-5 08:41 | 顯示全部樓層
TTS(Text-To-Speech,文本到語音)
我們比較熟悉的ASR(Automatic Speech Recognition),是將聲音轉(zhuǎn)化為文字,可類比于人類的耳朵。而TTS是將文字轉(zhuǎn)化為聲音(朗讀出來),類比于人類的嘴巴,是人機(jī)對話的一部分,讓機(jī)器能夠說話。

TTS是同時運(yùn)用語言學(xué)和心理學(xué)的杰出之作,在內(nèi)置芯片的支持之下,通過神經(jīng)網(wǎng)絡(luò)的設(shè)計,把文字智能地轉(zhuǎn)化為自然語音流。TTS技術(shù)對文本文件進(jìn)行實時轉(zhuǎn)換,轉(zhuǎn)換時間之短可以秒計算。在其特有智能語音控制器作用下,文本輸出的語音音律流暢,使得聽者在聽取信息時感覺自然,毫無機(jī)器語音輸出的冷漠與生澀感。TTS語音合成技術(shù)即將覆蓋國標(biāo)一、二級漢字,具有英文接口,自動識別中、英文,支持中英文混讀。所有聲音采用真人普通話為標(biāo)準(zhǔn)發(fā)音,實現(xiàn)了120-150個漢字/分鐘的快速語音合成,朗讀速度達(dá)3-4個漢字/秒,使用戶可以聽到清晰悅耳的音質(zhì)和連貫流暢的語調(diào)。有少部分MP3隨身聽具有了TTS功能。


000-- (1).jpg

回復(fù)

使用道具 舉報

ID:513258 發(fā)表于 2020-2-5 08:59 | 顯示全部樓層
本帖最后由 eagler8 于 2020-2-5 10:10 編輯

語音合成(SpeechSynthesis)
語音合成,能將任意文字信息實時轉(zhuǎn)化為標(biāo)準(zhǔn)流暢的語音朗讀出來,相當(dāng)于給機(jī)器裝上了人工嘴巴。它涉及聲學(xué)、語言學(xué)、數(shù)字信號處理、計算機(jī)科學(xué)等多個學(xué)科技術(shù),是中文信息處理領(lǐng)域的一項前沿技術(shù),解決的主要問題就是如何將文字信息轉(zhuǎn)化為可聽的聲音信息,也即讓機(jī)器像人一樣開口說話。我們所說的“讓機(jī)器像人一樣開口說話”與傳統(tǒng)的聲音回放設(shè)備(系統(tǒng))有著本質(zhì)的區(qū)別。傳統(tǒng)的聲音回放設(shè)備(系統(tǒng)),如磁帶錄音機(jī),是通過預(yù)先錄制聲音然后回放來實現(xiàn)“讓機(jī)器說話”的。這種方式無論是在內(nèi)容、存儲、傳輸或者方便性、及時性等方面都存在很大的限制。而通過計算機(jī)語音合成則可以在任何時候?qū)⑷我馕谋巨D(zhuǎn)換成具有高自然度的語音,從而真正實現(xiàn)讓機(jī)器“像人一樣開口說話”。

語音合成是通過機(jī)械的、電子的方法產(chǎn)生人造語音的技術(shù)。TTS技術(shù)(又稱文語轉(zhuǎn)換技術(shù))隸屬于語音合成,它是將計算機(jī)自己產(chǎn)生的、或外部輸入的文字信息轉(zhuǎn)變?yōu)榭梢月牭枚摹⒘骼臐h語口語輸出的技術(shù)。語音合成滿足將文本轉(zhuǎn)化成擬人化語音的需求,打通人機(jī)交互閉環(huán)。 提供多種音色選擇,支持自定義音量、語速,讓發(fā)音更自然、更專業(yè)、更符合場景需求。語音合成廣泛應(yīng)用于語音導(dǎo)航、有聲讀物、機(jī)器人、語音助手、自動新聞播報等場景,提升人機(jī)交互體驗,提高語音類應(yīng)用構(gòu)建效率。  

000-0-.jpg


回復(fù)

使用道具 舉報

ID:513258 發(fā)表于 2020-2-5 11:19 | 顯示全部樓層
TTS一般分為兩個步驟
一、 文本處理。這一步做的事情是把文本轉(zhuǎn)化成音素序列,并標(biāo)出每個音素的起止時間、頻率變化等信息。作為一個預(yù)處理步驟,它的重要性經(jīng)常被忽視,但是它涉及到很多值得研究的問題,比如拼寫相同但讀音不同的詞的區(qū)分、縮寫的處理、停頓位置的確定,等等。
二、語音合成。狹義上這一步專指根據(jù)音素序列(以及標(biāo)注好的起止時間、頻率變化等信息)生成語音,廣義上它也可以包括文本處理的步驟。這一步主要有三類方法:
1、拼接法,即從事先錄制的大量語音中,選擇所需的基本單位拼接而成。這樣的單位可以是音節(jié)、音素等等;為了追求合成語音的連貫性,也常常用使用雙音子(從一個音素的中央到下一個音素的中央)作為單位。拼接法合成的語音質(zhì)量較高,但它需要錄制大量語音以保證覆蓋率。
2、參數(shù)法,即根據(jù)統(tǒng)計模型來產(chǎn)生每時每刻的語音參數(shù)(包括基頻、共振峰頻率等),然后把這些參數(shù)轉(zhuǎn)化為波形。參數(shù)法也需要事先錄制語音進(jìn)行訓(xùn)練,但它并不需要100%的覆蓋率。參數(shù)法合成出的語音質(zhì)量比拼接法差一些。
3、聲道模擬法。參數(shù)法利用的參數(shù)是語音信號的性質(zhì),它并不關(guān)注語音的產(chǎn)生過程。與此相反,聲道模擬法則是建立聲道的物理模型,通過這個物理模型產(chǎn)生波形。這種方法的理論看起來很優(yōu)美,但由于語音的產(chǎn)生過程實在是太復(fù)雜,所以實用價值并不高。

0000.jpg


回復(fù)

使用道具 舉報

ID:513258 發(fā)表于 2020-2-5 14:23 | 顯示全部樓層
06.jpg
中文TTS文本轉(zhuǎn)語音合成模塊(當(dāng)前版本V5 )
網(wǎng)上資料非常少,細(xì)看模塊上主要有三塊芯片,U1估計是主要芯片,可惜被蓋住了,查不到具體型號。

回復(fù)

使用道具 舉報

ID:513258 發(fā)表于 2020-2-5 14:48 | 顯示全部樓層
07.jpg
U2是8002A
8002A 是一顆帶關(guān)斷模式的音頻功放 IC。在 5V 輸入電壓下工作時,負(fù)載(3Ω)上的平均功率為 3W,且失真度不超過 10%。而對于手提設(shè)備而言,當(dāng) VDD 作用于關(guān)斷端時,8002A 將會進(jìn)入關(guān)斷模式,此時的功耗極低,IQ 僅為 0.6uA。8002A 是專為大功率、高保真的應(yīng)用場合所設(shè)計的音頻功放 IC。所需外圍元件少且在 2.0V~5.5V 的輸入電壓下即可工作。

功能特點
¾ 無需輸出耦合電容或外部緩沖電路。
¾ 穩(wěn)定的增益輸出。
¾ 外部增益設(shè)置。
¾ 封裝形式:SOP8、SOP8-PP、DIP8、MSOP8。

回復(fù)

使用道具 舉報

ID:513258 發(fā)表于 2020-2-5 15:11 | 顯示全部樓層
00-.jpg
U5的型號是MX25L6406EMI-12G

功能描述:IC FLASH SER 64MB 86MHZ 16SOP
RoHS:是
類別:集成電路 (IC) >> 存儲器
系列:MX25xxx05/06
標(biāo)準(zhǔn)包裝:2,500
系列:- 格式 -
存儲器:EEPROMs - 串行
存儲器類型:EEPROM
存儲容量:1K (128 x 8)
速度:100kHz
接口:UNI/O(單線)
電源電壓:1.8 V ~ 5.5 V
工作溫度:-40°C ~ 85°C
封裝/外殼:8-TSSOP,8-MSOP(0.118,3.00mm 寬)

回復(fù)

使用道具 舉報

ID:513258 發(fā)表于 2020-2-5 15:19 | 顯示全部樓層
MX25L6406EMI-12G,查到的外文資料,功能方框圖和型號命名規(guī)則
09.jpg


08.jpg

回復(fù)

使用道具 舉報

ID:513258 發(fā)表于 2020-2-5 19:44 | 顯示全部樓層
本帖最后由 eagler8 于 2020-2-6 09:10 編輯

09-.jpg


回復(fù)

使用道具 舉報

ID:513258 發(fā)表于 2020-2-6 09:10 | 顯示全部樓層
10.jpg
回復(fù)

使用道具 舉報

ID:513258 發(fā)表于 2020-2-6 09:13 | 顯示全部樓層
11.jpg
回復(fù)

使用道具 舉報

ID:513258 發(fā)表于 2020-2-6 09:14 | 顯示全部樓層
12.jpg
回復(fù)

使用道具 舉報

ID:513258 發(fā)表于 2020-2-6 09:15 | 顯示全部樓層
13.jpg
回復(fù)

使用道具 舉報

ID:513258 發(fā)表于 2020-2-6 14:18 | 顯示全部樓層
  1. /*
  2.   【Arduino】168種傳感器模塊系列實驗(資料+代碼+圖形+仿真)
  3.   實驗一百三十八:中文TTS文本轉(zhuǎn)語音合成模塊 替代SYN6288和XFS5152
  4.   實驗接線:
  5.   TX -> Arduino 0
  6.   RX -> Arduino 1
  7.   5V -> Arduino 5V
  8.   GND -> Arduino GND
  9. */

  10. void setup()
  11. {
  12.   Serial.begin(9600);
  13. }
  14. void loop()
  15. {
  16.   Serial.println("1234567890") ;
  17.   delay(5000);
  18.   Serial.println("abcdefghijk") ;
  19.   delay(5000);
  20. }
復(fù)制代碼


回復(fù)

使用道具 舉報

ID:513258 發(fā)表于 2020-2-6 14:28 | 顯示全部樓層
15.jpg
回復(fù)

使用道具 舉報

ID:513258 發(fā)表于 2020-2-6 14:31 | 顯示全部樓層
14.jpg
回復(fù)

使用道具 舉報

ID:513258 發(fā)表于 2020-2-6 16:12 | 顯示全部樓層
實驗之二:嘗試中文TTS文本轉(zhuǎn)語音合成播放

  1. /*
  2. 【Arduino】168種傳感器模塊系列實驗(資料+代碼+圖形+仿真)
  3. 實驗一百三十八:中文TTS文本轉(zhuǎn)語音合成模塊 替代SYN6288和XFS5152
  4. 實驗之二:嘗試中文TTS文本轉(zhuǎn)語音合成播放
  5. 模塊實驗接線:
  6. TX -> Arduino 0
  7. RX -> Arduino 1
  8. 5V -> Arduino 5V
  9. GND -> Arduino GND
  10. */

  11. void setup()
  12. {
  13. Serial.begin(9600);
  14. }
  15. void loop()
  16. {
  17. Serial.println("期待好的解決方案 對編碼轉(zhuǎn)換這塊一直有疑問") ;
  18. delay(5000);
  19. }
復(fù)制代碼



回復(fù)

使用道具 舉報

ID:513258 發(fā)表于 2020-2-6 16:13 | 顯示全部樓層
17.jpg
回復(fù)

使用道具 舉報

ID:513258 發(fā)表于 2020-2-6 17:15 | 顯示全部樓層
https://v.youku.com/v_show/id_XNDUzNDkyMjY4OA==.html

由于編碼不同,發(fā)出的是亂碼播放,下面開始嘗試學(xué)習(xí)編碼轉(zhuǎn)換相關(guān).......

播放鏈接  https://v.youku.com/v_show/id_XNDUzNDkyMjY4OA==.html

回復(fù)

使用道具 舉報

ID:513258 發(fā)表于 2020-2-6 19:05 | 顯示全部樓層
經(jīng)查詢資料,中文TTS文本轉(zhuǎn)語音合成模塊支持任意中文、 英文字母、阿拉伯?dāng)?shù)字的文本合成,并且支持中文、英文字母、數(shù)字的混讀。模塊支持中文 GBK 編碼集;支持大、小寫英文字母。

GBK編碼(即漢字國標(biāo)擴(kuò)展碼)
GBK編碼,是對GB2312編碼的擴(kuò)展,因此完全兼容GB2312-80標(biāo)準(zhǔn)。GBK編碼依然采用雙字節(jié)編碼方案,其編碼范圍:8140-FEFE,剔除xx7F碼位,共23940個碼位。共收錄漢字和圖形符號21886個,其中漢字(包括部首和構(gòu)件)21003個,圖形符號883個。GBK編碼支持國際標(biāo)準(zhǔn)ISO/IEC10646-1和國家標(biāo)準(zhǔn)GB13000-1中的全部中日韓漢字,并包含了BIG5編碼中的所有漢字。GBK編碼方案于1995年12月15日正式發(fā)布,這一版的GBK規(guī)范為1.0版。Windows 95系統(tǒng)就是以GBK為內(nèi)碼,又由于GBK同時也涵蓋了Unicode所有CJK漢字,所以也可以和Unicode做一一對應(yīng)。

編碼范圍
8140-FEFE (33088-65278)
全部編碼分為三大部分:1.漢字區(qū);2.圖形符號區(qū);3.用戶自定義區(qū)(詳情見特性碼位分配及順序)

適用范圍以及存在問題
幾乎完美支持漢字,但是不支持部分國家的語言(如一些東亞國家,日本等)
所以經(jīng)常會有GBK到UNICODE的轉(zhuǎn)換

特性
1、字匯——GBK 規(guī)范收錄了 ISO 10646.1 中的全部 CJK 漢字和符號,并有所補(bǔ)充。具體包括:
GB 2312 中的全部漢字、非漢字符號。
GB 13000.1 中的其他 CJK 漢字。以上合計 20902 個 GB 化漢字。
《簡化字總表》中未收入 GB 13000.1 的 52 個漢字。
《康熙字典》及《辭海》中未收入 GB 13000.1 的 28 個部首及重要構(gòu)件。
13 個漢字結(jié)構(gòu)符。
BIG-5 中未被 GB 2312 收入、但存在于 GB 13000.1 中的 139 個圖形符號。
GB 12345 增補(bǔ)的 6 個拼音符號。
漢字“○”。
GB 12345 增補(bǔ)的 19 個豎排標(biāo)點符號(GB12345 較 GB 2312 增補(bǔ)豎排標(biāo)點符號 29 個,其中 10 個未被 GB 13000.1 收入,故 GBK 亦不收)。
從 GB 13000.1 的 CJK 兼容區(qū)挑選出的 21 個漢字。
GB 13000.1 收入的 31 個 IBM OS/2 專用符號。
未錄入《新華字典》上的一些字,如“韡”的簡體。

2、碼位分配及順序
GBK 亦采用雙字節(jié)表示,總體編碼范圍為 8140-FEFE,首字節(jié)在 81-FE 之間,尾字節(jié)在 40-FE 之間,剔除 xx7F 一條線?傆 23940 個碼位,共收入 21886 個漢字和圖形符號,其中漢字(包括部首和構(gòu)件)21003 個,圖形符號 883 個。

3、誤處理
低字節(jié)是0x40-0x7E的GBK字符有一定特殊性,因為這些字符占用了ASCII碼的位置,這樣會給一些系統(tǒng)帶來麻煩。有些系統(tǒng)中用0x40-0x7E中的字符(如“|”)做特殊符號,在定位這些符號時又沒有判斷這些符號是不是屬于某個 GBK字符的低字節(jié),這樣就會造成錯誤判斷。在支持GB2312的環(huán)境下就不存在這個問題。需要注意的是支持GBK的環(huán)境中小于0x80的某個字節(jié)未必就 是ASCII符號;另外就是最好選用小于0×40的ASCII符號做一些特殊符號,這樣就可以快速定位,且不用擔(dān)心是某個漢字的另一半。Big5編碼中也存在相應(yīng)問題。

4、雙字節(jié)編碼
遵循GB2312規(guī)定。
回復(fù)

使用道具 舉報

ID:513258 發(fā)表于 2020-2-6 19:26 | 顯示全部樓層
網(wǎng)上搜尋,請教知乎《Arduino 魔法書》專欄的兔子老師,才明白這個TTS模塊只能識別16進(jìn)制的GBK編碼。

百度——漢字轉(zhuǎn)GBK,有很多在線工具,這里使用千千秀字(www點qqxiuzi點cn/bianma/zifuji.php),輸入“謝謝兔子老師”,自動轉(zhuǎn)換結(jié)果見下圖

18.jpg


回復(fù)

使用道具 舉報

ID:513258 發(fā)表于 2020-2-6 19:34 | 顯示全部樓層
例如漢字”兔子”的GBK編碼是“CDC3 D7D3”,再轉(zhuǎn)為C語言格式“0xCD,0xC3,0xD7,0xD3”。實驗開源代碼如下:

  1. /*
  2.   【Arduino】168種傳感器模塊系列實驗(資料+代碼+圖形+仿真)
  3.   實驗一百三十八:中文TTS文本轉(zhuǎn)語音合成模塊 替代SYN6288和XFS5152
  4.   實驗之三:中文TTS文本轉(zhuǎn)語音合成播放:兔子你好
  5. 模塊實驗接線:
  6.   TX -> Arduino 0
  7.   RX -> Arduino 1
  8.   5V -> Arduino 5V
  9.   GND -> Arduino GND
  10. */

  11. char a[4]={0xC4,0xE3,0xBA,0xC3};//你好
  12. char b[]={0xCD,0xC3,0xD7,0xD3};//兔子
  13. String zi= "";

  14. void setup() {
  15.   Serial.begin(9600);  
  16.   for(int i=0;i<4;i++) zi+=a[i];
  17. }

  18. void loop() {
  19.   Serial.println(zi);
  20.   Serial.println(b);
  21.   delay(1000);   
  22.   }
復(fù)制代碼





回復(fù)

使用道具 舉報

ID:513258 發(fā)表于 2020-2-6 19:56 | 顯示全部樓層
發(fā)送到串口的16進(jìn)制GBK編碼


19.jpg

回復(fù)

使用道具 舉報

ID:513258 發(fā)表于 2020-2-7 10:23 | 顯示全部樓層
20.jpg
回復(fù)

使用道具 舉報

ID:513258 發(fā)表于 2020-2-8 08:58 | 顯示全部樓層
  1. /*
  2.   【Arduino】168種傳感器模塊系列實驗(資料+代碼+圖形+仿真)
  3.   實驗一百三十八:中文TTS文本轉(zhuǎn)語音合成模塊 替代SYN6288和XFS5152
  4.   實驗之四:中文TTS文本轉(zhuǎn)語音合成播放:春節(jié)快樂
  5.   (GBK碼 B4BA,BDDA,BFEC,C0D6)
  6.   模塊實驗接線:
  7.   TX -> Arduino 0
  8.   RX -> Arduino 1
  9.   5V -> Arduino 5V
  10.   GND -> Arduino GND
  11. */

  12. char a[8] = {0xB4,0xBA,0xBD,0xDA,0xBF,0xEC,0xC0,0xD6}; //春節(jié)快樂

  13. void setup() {
  14.   Serial.begin(9600);
  15. }

  16. void loop() {
  17.   Serial.println(a);
  18.   delay(3000);
  19. }
復(fù)制代碼


回復(fù)

使用道具 舉報

ID:513258 發(fā)表于 2020-2-8 08:58 | 顯示全部樓層
21.jpg
回復(fù)

使用道具 舉報

ID:513258 發(fā)表于 2020-2-8 08:58 | 顯示全部樓層
22.jpg
回復(fù)

使用道具 舉報

ID:513258 發(fā)表于 2020-2-8 09:18 | 顯示全部樓層
本帖最后由 eagler8 于 2020-2-8 11:46 編輯

[media=x,500,375][/media]
中文TTS文本轉(zhuǎn)語音模塊合成播放“春節(jié)快樂”的10秒視頻
https://v.youku.com/v_show/id_XNDUzNTY3MjMyNA==.htm




回復(fù)

使用道具 舉報

ID:513258 發(fā)表于 2020-2-8 09:35 | 顯示全部樓層
完成本實驗,特別感謝兔子老師的微信指導(dǎo)與幫助,主要學(xué)習(xí)與參考的資料有

Arduino 語音交互 TTS語音合成
https://zhuanlan.zhihu.com/p/66314323

DIY朗讀機(jī)器人!不想給孩子讀故事?TTS語音合成模塊了解一下,B719模塊效果測試
https://www.bilibili.com/read/cv3630794/

TTS 真人發(fā)音 SYN6288 模塊
wwwarduinocn/thread-75043-1-1.html

Arduino語音模塊-Speech Synthesizer Bee語音合成模塊
wwwncnynlcom/archives/201606/192.html

關(guān)于 Arduino 發(fā)送中文字符問題 GB2312轉(zhuǎn)16進(jìn)制
https://www.cnblogs.com/xiaohe520/articles/7918641.html


回復(fù)

使用道具 舉報

ID:539387 發(fā)表于 2020-4-23 12:12 | 顯示全部樓層
點贊,專業(yè)就是王道,follow你的持續(xù)更新
回復(fù)

使用道具 舉報

ID:513258 發(fā)表于 2020-4-29 15:26 | 顯示全部樓層
foxzenith 發(fā)表于 2020-4-23 12:12
點贊,專業(yè)就是王道,follow你的持續(xù)更新

謝謝鼓勵,最近在做掌控板的系列實驗

MicroPython動手做(17)——掌控板之觸摸引腳

bbs.eeworld點com.cn/thread-1119462-1-1.html
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表