Micropython Library für den Yutone Voicetx Syn6988 Text zum Sprachmodul.
oder Demo Audio Download: Syn6988-Micropython-Demo.mp3
Was den folgenden Text "liest":
[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]

Der SYN6988 ist eines von mehreren Sprachsynthesizer- / Text-zu-Sprach-Modulen (TTS), die kostengünstig für Aliexpress und andere Anbieter verfügbar sind. Es ist beeindruckend, weil:
Es erzeugt eine klare englische Rede, ohne auf Phoneme zurückzugreifen;
Es verfügt über eine Line -Out- / Kopfhörerbuchse und kleine Lautsprecherausgänge, beide mit sehr sauberem Audio.
Es ist einfach, entweder durch asynchrone Serien oder SPI (letztere hier nicht versucht) zu übermitteln.
Es hat eine gewisse Flexibilität in Bezug auf Volumen, Tonhöhe und Sprachrate (aber es ist kein Dectalk);
Es verfügt über eine große Bibliothek mit Warntönen.
Es ist nicht teuer, in der Nähe zu sein? $ 15.
Natürlich gibt es Nachteile:
Die bisherige Dokumentation ist in Chinesisch;
Es hat nur eine schwach auftretende weibliche Stimme mit einer leicht roboterischen Lieferung;
Sie können das von Ihnen bestellte Board nicht bekommen! Ich wurde dieses Board mit einem XFS5152 -Chip verkauft, wenn es eindeutig einen SYN6988 hat.
Es ist schwer, einen Anbieter zu empfehlen, da ich nicht garantieren kann, dass er ein Board mit einem SYN6988 verkauft. Überprüfen Sie, ob die Beschreibung der Anbieter Syn6988 (es gibt ähnliche Chips Syn6288 und Syn6658 mit unterschiedlichen Funktionen) und die Platine verfügt über einen Chip mit einem klaren Syn6988 -Silksbildschirm. Ich habe ein paar Boards zum Verkauf gesehen, die SYN6658 auf dem PCB -Siebbildschirm sagen, aber ein Syn6988 im Bild und die Beschreibung haben.
Der SYN6988 ist ein 3,3 -V -Gerät für Logik und Strom. Es erfordert eine Zwei-Draht-UART-Verbindung sowie einen zusätzlichen digitalen Eingangspin, um den geschäftigen Status der TTS zu überwachen.
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)
Der SYN6988 verwendet eine feste serielle Portrate, die durch die Anordnung von Widerständen im Seriennerhaltsauswahlblock definiert ist. Meins ist für 9600 Baud fest verdrahtet.
Für einen Raspberry Pi Pico können diese Verbindungen in Code unterstützt werden mit:
ser = machine . UART ( 0 , baudrate = 9600 , bits = 8 , parity = None , stop = 1 )
busyPin = machine . Pin ( 2 , machine . Pin . IN , machine . Pin . PULL_UP )Die Audioausgabe erfolgt entweder über die Kopfhörer- / Leitungs -Buchse oder über die Lautsprechernadeln. Dieser Ausgang ist nicht implifiziert. Ich kann einen sehr kleinen ovalen Lautsprecher mit einem bequemen Volumen aus den Lautsprechernadeln fahren, aber große Haufen können sehr ruhig sein.
Das Board, das ich habe, ist keine fernrangige Breadboard-freundlich. Ich löste das, indem ich zwei 6-polige Arduino-Stapel-Header, die Stifte aus und wieder in den rechten Winkel beendete und dann die beiden Header nach hinten klebte. Dies gibt einen Header -Block, der den zentralen Trog in einem Brotbrett überbrückt, sodass das Syn6988 -Board zentral sitzen kann.

Wenn das Board korrekt angeschlossen ist, wird die rote LED -LED angezündet, wenn die TTS nicht spricht. Diese LED wird ausgehen, wenn die TTS spricht, und der Rdy -Pin wird nach Beginn der Rede in Kürze niedrig (ca. 0,1 bis 0,7 s) und nach Abschluss der Sprache hoch.
Wenn der obige Initialisierungscode verwendet wird, spricht das folgende Mikropython eine ziemlich ruhige "Hallo" vom Board:
import syn6988
s = syn6988 . SYN6988 ( ser , busyPin )
s . speak ( "[v1]hello" )Es gibt nur sehr wenige Methoden und Eigenschaften in diesem Modul:
Speak ( String ) - Sendet die Zeichenfolge an die TTS. Die Ausgabe kann mit eingebetteten Textbefehlen geformt werden. Akzeptiert Unicode -Text einschließlich traditioneller chinesischer Zeichen. Macht eine äußerst schlechte Arbeit, nicht englisch oder nicht chinesische Sprache zu versuchen.
block = true | Falsch - Standardmäßig wird die Sprache im Blockierungsmodus emittiert: Das heißt, die speak() -Methode kehrt erst zurück, wenn die TTS angegeben hat, dass sie fertig ist. Wenn block = False festgelegt ist, kehrt speak() sofort zurück, aber die TTS sprechen immer noch und das Warten wird dem Programmierer überlassen.
isBusy () - Wenn IsBusy () im Nicht -Blocking -Modus aufgerufen wird, kehrt isBusy() true zurück, während die TTS spricht. Dies kann verwendet werden, um die Unterbrechung der Sprache zu verhindern. Wenn Sie im Blockierungsmodus aufgerufen werden, wird immer falsch zurückgegeben.
Der Syn6988 wird durch Befehle gesteuert, die von [] umgeben sind. Es gibt viele davon, und ich verstehe sie nicht alle. Ich habe einige von ihnen in test-syn6988.py mit I Hoffe Clear Bedeutungen dessen, was sie tun, aufgenommen. Kurz:
[d] - Setzen Sie die TTs in den Standardmodus zurück. Kann nützlich sein, nachdem Sie eines der Alarm -Sounds aufgerufen haben.
[g0] - Automatische Sprachraten; [g1] - Chinesische Sprachpräferenz; [g2] - Präferenz für englische Sprache. Der im chinesischen Modus gesprochene Englisch hat eine seltsame Intonation, während Chinesen im englischen Modus möglicherweise nicht korrekt erkannt werden.
[p*] - Pause, zum Beispiel [p500] Pause für 500 ms.
[s*] - Sprachrate: [s0] am langsamsten an [s10] am schnellsten.
[t*] - Ton/Tonhöhe: [t0] am niedrigsten zu [t10] am höchsten.
[x0] / [x1] - Interpretieren Sie eine Zeichenfolge, die mit "Ton" als einer von mehreren hundert (?) verschiedenen Tönen, Teilen und Alarmen beginnt. Zum Beispiel spielt [x1]soundy[d] ein ziemlich angenehmes Glockenspiel, das ich sehr über eingesetzt habe. Es ist wichtig, [d] nach diesem Befehl zu verwenden, oder unerwartete Ergebnisse treten auf. Eine Klangtischreferenz ist hier: Syn-6988 Sprache mit Micropython-Wir haben ein Huhn gesehen ...
[v*] - Volumen: [v0] still, [v1] lautestens [v10] lautesten.
Der SYN6988 akzeptiert einen breiten Bereich von Eingangscodierungen, von denen keiner von Micropython unterstützt wird. Es unterstützt jedoch UTF16-BE (zwei Bytes pro b'x00hx00ex00lx00lx00o' , kein Bom, zuerst hoher Byte; z. Wenn unsere UTF-16BE-codierten Daten in data_bytes enthalten sind und wir definieren
tx_len = len ( data_bytes ) + 2Der SYN6988 akzeptiert den folgenden Byte -Stream über den seriellen Port und versucht, ihn zu sprechen:
0xFD, tx_len // 256, tx_len % 256, 0x01, 0x04, data_bytes
Die Datenzeichenfolge sollte nicht zu lang sein: Vielleicht etwas unter 4096 Zeichen. Das Board kann bis zu 700 ms einnehmen, um Text zu verarbeiten, und daher pausieren wir so lange innehalten, um sicherzustellen, dass der Text alle gesprochen wird.
Stewart Russell - scruss.com - alka @scruss @xoxo.zone
MIT. Wenn Sie dies jedoch verbessern, lassen Sie es mich bitte wissen, damit ich das besser machen kann.
Der UTF-8-> UTF-16BE-Code funktioniert, fühlt sich jedoch an, dass er verbessert werden könnte. Es muss jedoch etwas bleiben, das ich verstehen kann.
Es besteht eine kleine Chance, dass ein wirklich langer Text übersprungen wird, weil ich nicht lange genug darauf warte, dass er beim Lesen im Blockierungsmodus verarbeitet wird.
Verallgemeinern Sie diesen Code (wenn möglich) so, dass sie mit Syn6288-, Syn6658- und XFS5152 -Chipsätzen arbeiten. Ich habe einige davon in Ordnung.
Yutone Voicetx Syn6988 Dokumentation (nur in Chinesisch): 语音合成芯 片 -SYN6988 中英文 TTS 语音芯 片 片 片 片 片 片 片 片 片 -syn6988.
Meine frühen Versuche, dieses Board von CPython: Rede aus Python mit dem Syn6988 -Modul zu fahren - wir haben ein Huhn gesehen. Das erzeugt Klang, aber ich fahre ihn falsch. Funktioniert jedoch immer noch. Hat eine automatisch translatierte Kopie der Programmierreferenz, von der ich nur arbeiten musste.
Richard Brautigans Gedicht , das alle von Maschinen der Loving Grace "von einem SYN6988 TTS -Chip von Micropython angetrieben werden : Alle von Maschinen von Loving Grace | Soundcloud.