Faire parler la Raspberry

Hoe u de Raspberry Pi tekst laat voorlezen met eSpeak.

Bijgewerkt 5 november 2019 - 0 Opmerkingen - , , ,

ⓘ Cet article peut avoir été partiellement ou totalement traduit à l'aide d'outils automatiques. Nous nous excusons des erreurs que cela pourrait engendrer.

Bij computers is het probleem met de gebruikersinterface waarschijnlijk een van de meest gecompliceerde. Dat, dingen benoemen en een cache ongeldig maken …

De gemakkelijkste manier om informatie vanaf een computer aan een mens te presenteren, is meestal door middel van visie. Maar daarvoor heb je een scherm nodig, dat lomp, duur en daarom niet erg geschikt is voor aan boord.

In deze tutorial zullen we zien hoe u het gehoor van uw gebruikers kunt gebruiken in plaats van hun visie, door uw Raspberry Pi tekst te laten spreken met behulp van eSpeak-software, genaamd Text To Speech.

De hardware om de Raspberry Pi te laten praten

Om uw Raspberry Pi te laten spreken, hebben we de volgende apparatuur nodig:

Installeer eSpeak op de Raspberry Pi

Om uw Raspberry Pi te laten spreken, gebruiken we de eSpeak-software, een open source tekst-naar-spraak-software.

Het principe van eSpeak is als volgt: je geeft het wat tekst (een reeks tekens, een bestand, enz.) En het splitst het op in fonemen (de kleinste geluiden waaruit een gesproken taal bestaat), en gebruikt vervolgens een hele reeks technieken om deze fonemen om te zetten in echte geluidsbestanden.

Om eSpeak op de Raspberry Pi te installeren is het vrij eenvoudig aangezien het al aanwezig is in de repositories. We hoeven dus alleen maar de repositories bij te werken en om de installatie van eSpeak te vragen:

sudo apt update
sudo apt install espeak -y

Lees een zin met eSpeak

Nu eSpeak is geïnstalleerd, kunnen we ervoor zorgen dat het een eerste zin leest. Maar daarvoor zullen we ervoor zorgen dat het geluid via de Jack-poort van onze Raspberry Pi naar onze luidsprekers gaat.

Om dit te doen, voer je het sudo raspi-config commando uit, ga dan naar "Geavanceerde opties", "Audio", "Forceer 3,5 mm ('koptelefoon') aansluiting" en tenslotte "Voltooien".

We zullen een map aanmaken espeak download in de gebruikersmap een audiobestand en speel het af om te controleren of alles correct werkt:

mkdir /home/pi/espeak
cd /home/pi/espeak
wget https://raspberry-pi.fr/download/espeak/test.mp3 -O test.mp3
ffplay -nodisp test.mp3

U zou een C majeur toonladder moeten horen spelen.

Nu we weten dat de luidsprekers werken, gaan we eSpeak vragen om de zin te zeggen: "De frambozen staan op de kruk van mijn grootvader." Hiervoor gebruiken we het onderstaande commando:

espeak -a 200 -v fr+f3 "Les framboises sont perchées sur le tabouret de mon grand-père." --stdout | aplay

Wat ons zoiets geeft …

Dus ja, de stem is vreselijk, maar dat zullen we later verbeteren.

Laten we het commando een beetje omzeilen om te proberen het te begrijpen:

  • espeak start het espeak-programma
  • -a 200 geeft het volume aan dat voor geluid moet worden gebruikt. Het varieert van 0 tot 200 en is standaard 100.
  • -v fr+f3 vertelt ons de taal die we moeten gebruiken. fr komt overeen met de Franse taal, +f3 geeft aan dat we de derde variant van de vrouwenstem willen gebruiken die wordt voorgesteld door eSpeak. Denk eraan om de taalcode aan uw tekst aan te passen.
  • De zin tussen aanhalingstekens is de zin die wordt uitgesproken door eSpeak. In plaats daarvan hadden we hem ook kunnen vragen om terloops een tekstbestand te lezen. -f le_chemin/du/fichier.txt.
  • --stdout vertelt eSpeak dat in plaats van de audio rechtstreeks af te spelen, het de gegenereerde gegevens naar de standaarduitvoer van de terminal moet sturen.
  • | aplay geeft aan dat de uitvoer die door eSpeak wordt gegenereerd, wordt omgeleid naar de invoer van het aplay-programma, een programma voor het afspelen van audiobestanden in Wave-indeling, het programma dat wordt gegenereerd door eSpeak. Merk op dat we in plaats daarvan kunnen gebruiken > mon_fichier.wav om de audio-uitvoer in een bestand op te slaan.

Zoals u kunt zien, is het niet eSpeak maar een spel dat het geluid afspeelt. De reden hiervoor is heel simpel, espeak is voor sommige versies afgeluisterd op de Raspberry Pi …

Een paar regels met espeak-bugs.
En dat, mijn vriend, het is wat we "een bug" noemen …

Als u eSpeak rechtstreeks probeert te laten spreken, krijgt u fouten met betrekking tot Alsa, de Raspberry Pi-geluidsserver. De eenvoudigste oplossing is daarom om de gegevens naar aplay te sturen, wat zelf perfect werkt. Uiteindelijk werkt het en dat is het enige dat telt.

Verbeter de stem van eSpeak door MBROLA op de Raspberry te installeren.

Zoals u kunt zien, zijn de stemmen die door eSpeak worden gegenereerd absoluut smerig. Geen paniek, we hebben een oplossing om dit te verbeteren.

Ik noemde het aan het begin van het artikel, eSpeak is in staat fonemen te genereren, deze stukjes geluid vormen een gesproken taal. En het blijkt dat er andere programma's zijn die deze fonemen kunnen lezen en uitspreken, en op een manier overtuigender dan eSpeak!

In ons geval zullen we de MBROLA-software gebruiken, een wereldwijd samenwerkingsproject geïnitieerd door de Polytechnische Faculteit van Mons, België, dat tot doel heeft een enorme database voor spraaksynthese te ontwerpen.

Vreemd genoeg is de MBROLA-software niet beschikbaar in de Raspbian-repositories, terwijl de taalgegevens dat wel zijn. Dit heeft tot gevolg dat de installatie van deze taalgegevens onmogelijk wordt …

Zelfs Kevin Hart vindt het een buggy!
Wat de wat?

Geen zorgen, wij hebben de oplossing! Inderdaad, een goede ziel was zo vriendelijk om zelf een MBROLA-pakket voor de Raspberry Pi te maken, en daarom besloten we om een spiegel op de site te maken.

Dus we zullen dit pakket downloaden en installeren met de onderstaande commando's:

cd ~/espeak
wget https://raspberry-pi.fr/download/espeak/mbrola3.0.1h_armhf.deb -O mbrola.deb
sudo dpkg -i mbrola.deb

En nu MBROLA is geïnstalleerd, kunnen we de taalbestanden downloaden die we nodig hebben. Dus voor mij zal het zijn mbrola-fr1, dat wil zeggen de eerste Franse stem. Pas het commando aan uw taal aan.

sudo apt install mbrola-fr1 -y

Het enige wat we nu hoeven te doen is onze vorige eSpeak-bestelling aan te passen en deze aan te passen om fonemen te genereren en deze door MBROLA te laten lezen. Dat geeft ons het onderstaande commando.

espeak -a 200 -v mb-fr1 -s 150 "Les framboises sont perchées sur le tabouret de mon grand-père." --stdout | aplay

Wat ons de onderstaande audio geeft:

We hebben natuurlijk altijd het gevoel dat het een robot is. Maar geef toe dat er nog steeds het beste is!

U vindt enkele van dezelfde instellingen als voorheen, maar met twee wijzigingen:

  • -v mb-fr1 geeft aan dat we MBROLA willen gebruiken om het audiobestand te genereren mb, en de Franse stem nummer 1 -fr1.
  • -s 150 geeft aan wanneer voor hem dat we het bestand met een snelheid van 150 woorden per minuut willen genereren. De standaardwaarde is 165, maar ik vind het een beetje snel, althans voor Frans.

Zoals eerder kunt u natuurlijk de opdracht wijzigen om een bestand te maken, de tekst uit een txt-bestand te lezen, enz.

Door deze commando's te combineren met zaken als het lezen van RFID-tags en dergelijke, kun je eenvoudig in-vehicle systemen met relatief complete interfaces creëren.

Natuurlijk zijn we nog ver verwijderd van een menselijke stem en weten we dat er betere "Text to Speech" -engines zijn, zoals Mozilla's TTS, ontwikkeld als onderdeel van het Common Voice-project. Desalniettemin bieden MBROLA en eSpeak een goed compromis tussen gebruiksgemak, snelheid van uitvoering en efficiëntie.

Notez cet article.
Delen
Nieuwsbrief
Auteur :
Raspberry Pi FR
Word lid van de Raspberry Pi-gemeenschap
Van een computer van $ 35 zijn al 10 miljoen exemplaren verkocht
KOOP DE NIEUWE RASPBERRY PI 4
Gerelateerde tutorials
Waarom zou ik Bitcoin hebben uitgelegd aan France Info in plaats van aan mijn grootmoeder? Hoe maak je een Tor-router met de Raspberry Pi. Schakel een LED aan en uit met de Raspberry Pi en Python. Activeer de TTL-seriële poort van de Raspberry Pi en controleer of deze werkt. Maak een Raspberry Pi-cluster met Docker Swarm
Geen reacties

Delen
Aanmelden nieuwsbrief
Abonneer u op de nieuwsbrief.
Vond je dit artikel leuk?
Schrijf je in en blijf op de hoogte!