yutone voicetx syn6988文本到語音模塊的micropython庫。
或演示音頻下載:Syn6988-micropopython-demo.mp3
“讀取”以下文本:
[g2]Hello! [g1]你好![g2]
I can speak in English, and also in Chinese:
[g1]千里之行,始于足下。[g2]
which means: a journey of five hundred kilometres starts with the first step
[s1]I can speak slowly, [s9] and I can speak very fast[s5]
[v5]I can be [v10]loud or [v1]very quiet. [v5]
I can use [t1]low tones [t5]or [t8]high tones[t5]
[d][g0]my work here is done [x1]soundy[d]

Syn6988是幾種語音合成器 /文本到語音(TTS)模塊之一,可廉價地在Aliexpress和其他供應商上可用。令人印象深刻,因為:
它會產生清晰的英語演講,而無需訴諸音素。
它具有排隊 /耳機插孔和小型揚聲器輸出,都具有非常乾淨的音頻。
通過異步串行或SPI與連接很容易(後者在這裡未嘗試);
它的音量,音高和語音速率具有一定的靈活性(但不是偏移);
它具有大型的內置警報庫;
它並不昂貴,在附近? $ 15。
當然,有弊端:
到目前為止,所有文件均以中文為單位。
它只有一個微弱的女性聲音,並具有略微機器人的傳遞。
您可能沒有訂購的董事會!當我有Syn6988時,我被賣給了該板上的XFS5152芯片。
很難推荐一個供應商,因為我不能保證他們在上面出售帶有Syn6988的董事會。檢查供應商描述是否說Syn6988(有類似的芯片Syn6288和Syn6658具有不同功能),並且板上有一個帶有透明Syn6988絲線屏幕的芯片。我看過幾個木板出售,上面說明了PCB絲網上的Syn6658,但圖像和描述中有Syn6988。
Syn6988是邏輯和功率的3.3 V設備。它需要兩線UART連接以及一個額外的數字輸入引腳來監視TTS的繁忙狀態。
SYN6988 MicroPython Board Raspberry Pi Pico
========= =================== ===================
RDY Digital Input GPIO 2
RXD UART TXD GPIO 0 (UART 0 TX)
TXD UART RXD GPIO 1 (UART 0 RX)
GND Ground Any GND pin
3V3 3V3 supply 3V3(OUT)
SYN6988使用固定的串行端口速率,該端口速率由串行速度選擇塊中電阻的排列定義。我的9600鮑德(Baud)是硬線。
對於Raspberry Pi Pico,可以在代碼中支持這些連接:
ser = machine . UART ( 0 , baudrate = 9600 , bits = 8 , parity = None , stop = 1 )
busyPin = machine . Pin ( 2 , machine . Pin . IN , machine . Pin . PULL_UP )音頻輸出要么通過耳機 /線排出插孔,也可以通過揚聲器引腳。該輸出沒有擴增。我可以從揚聲器銷的舒適音量中駕駛非常小的橢圓形揚聲器,但是大型高調可能非常安靜。
我擁有的木板不是遠程麵包板友好的。我解決了兩個六針Arduino堆疊標頭,將銷釘彎曲並以直角向後彎曲,然後將兩個標頭向後粘合。這給了一個標頭塊,可以將中央槽橋接在麵包板上,從而使Syn6988板中心坐著。

如果板正確連接,當TTS不講話時,紅色現成的LED將被點亮。當TTS講話時,該LED將出現,並且在演講開始後,RDY PIN將在不久(約0.1至0.7 s)中降低,並且在演講結束時會升高。
如果使用了上面的初始化代碼,則以下micropython會說出板上的安靜“ Hello”:
import syn6988
s = syn6988 . SYN6988 ( ser , busyPin )
s . speak ( "[v1]hello" )該模塊的方法和屬性很少:
說話(字符串) - 將字符串發送到TTS。輸出可以用嵌入式文本命令形成。接受包括傳統漢字的Unicode文本。嘗試非英語或非中國語言的工作非常差。
塊= true | false-默認情況下,語音在阻塞模式下發射:也就是說, speak()方法在TTS表示完成之前不會返回。如果設置了block = False ,則會立即返回speak() ,但是TTS仍將說話,並且等待將留給程序員。
ISBUSY () - 如果以非阻滯模式調用, isBusy()在TTS講話時返回true。這可以用來防止中斷語音。如果以阻塞模式調用,將始終返回false。
Syn6988由[]包圍的命令控制。有很多,我不了解所有這些。我將其中一些放在test-syn6988.py中。簡而言之:
[d] - 將TTS重置為標準模式。調用任何警報聲音後,可能會很有用。
[g0] - 自動語言猜測; [g1] - 中文偏好; [g2] - 英語偏好。以中文模式使用英語的語調很奇怪,而在英語模式下使用的中文可能無法正確檢測到。
[p*] - 暫停,例如[p500]停頓500毫秒。
[s*] - 語音率: [s0]最慢到[s10]最快。
[t*] - 音調/音調: [t0]最低至[t10]最高。
[x0] / [x1] - 將“聲音”開頭的字符串解釋為幾百(?)不同的音調,鐘聲和警報之一。例如, [x1]soundy[d]扮演著一個相當令人愉悅的鈴聲,我過度使用了。在此命令之後使用[d]很重要,或出乎意料的結果。聲表參考在這裡:Syn-6988與Micropython的演講 - 我們看到了一隻雞肉…
[v*] - 卷: [v0]靜音, [v1]最安靜[v10]最大的聲音。
Syn6988接受廣泛的輸入編碼,而這些編碼都不由Micropython支持。但是,它確實支持UTF16-be(每char b'x00hx00ex00lx00lx00o'字節,無bom,高字節首先;如果我們的UTF-16BE編碼數據在data_bytes中,我們定義
tx_len = len ( data_bytes ) + 2Syn6988將接受以下字節流在串行端口上,並試圖發言:
0xFD, tx_len // 256, tx_len % 256, 0x01, 0x04, data_bytes
數據字符串不應該太長:也許是4096個字符的內容。董事會最多可以耗時700毫秒來處理文本,因此我們暫停了這麼長時間,以確保使用文本。
Stewart Russell -Scruss.com-又名 @scruss @xoxo.zone
麻省理工學院。但是,如果您對此有所改進,請告訴我,以便我可以使情況變得更好。
UTF-8-> UTF-16BE代碼有效,但感覺可以改進。不過,它必須留下我能理解的東西。
很小的可能會跳過很長的文字,因為我在阻止模式下閱讀時不等待足夠長的時間來處理它。
概括此代碼(如果可能的話)與SYN6288,SYN6658和XFS5152芯片組一起使用。我有幾個順序。
Yutone voicetx Syn6988文檔(僅以中文):語音合成芯-syn6988中英文tts語音芯片。
我的早期嘗試從Cpython:Python的Syn6988模塊的演講 - 我們看到了一隻雞肉……。這會產生聲音,但我實際上是錯誤地駕駛的。不過,仍然有效。具有編程參考的自動翻譯副本,這是我必須使用的所有內容。
理查德·布勞蒂根(Richard Brautigan)的詩歌都被愛情恩典的機器觀看,由Micropython驅動的Syn6988 TTS芯片:所有人都被Love Grace的機器注視著| Soundcloud。