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。