{"id":7576,"date":"2021-12-21T08:29:16","date_gmt":"2021-12-21T07:29:16","guid":{"rendered":"https:\/\/www.picademie.nl\/?p=7576"},"modified":"2022-01-16T09:45:41","modified_gmt":"2022-01-16T08:45:41","slug":"7576","status":"publish","type":"post","link":"https:\/\/www.picademie.nl\/index.php\/2021\/12\/21\/7576\/","title":{"rendered":"Gesproken status in Python"},"content":{"rendered":"\n<p>Steeds meer (openbare) systemen hebben naast displays en led aanduidingen ook audiosystemen ingebouwd om bijvoorbeeld slechtzienden en visueel gehandicapten er gebruik van te kunnen laten maken.  <\/p>\n\n\n\n<p>In deze tutorial laat ik zien hoe je tekst naar spraak omzet en er audiobestanden van maakt en hoe je deze in je python script kunt gebruiken. <\/p>\n\n\n\n<p><strong>Spraakgenerator<\/strong><br>Natuurlijk kun je een microfoon gebruiken om zelf tekst in te spreken en deze met een script af te spelen, maar om een standaard stem te gebruiken kun je ook gebruik maken van een (gratis) online spraakgenerator. Het voordeel is dat je keuze hebt uit meerdere stemmen, je hoeft dus niet je vriend(in) meer te vragen om iets in te spreken als je je eigen stem niet mooi vindt.<\/p>\n\n\n\n<p>Waar je snel achter zult komen is dat je bij gebruik van een spraakgenerator een stem moet gebruiken die op het Nederlands afgestemd is als je Nederlandse tekst wilt omzetten. Hieronder hoor je twee stemmen, een Nederlandse en een Engelse. Beiden hebben dezelfde tekst &#8216;<span class=\"has-inline-color has-vivid-purple-color\">welkom bij picademie punt nl<\/span>&#8216; omgezet. De punt heb ik (fonetisch) moeten uitschrijven want de Nederlandse stem zet de punt niet om. <\/p>\n\n\n\n<figure class=\"wp-block-audio\"><audio controls src=\"https:\/\/www.picademie.nl\/wp-content\/uploads\/2021\/12\/Welkom-bij-Picademie.nl-Microsoft-Frank.mp3\"><\/audio><figcaption>Microsoft Frank<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-audio\"><audio controls src=\"https:\/\/www.picademie.nl\/wp-content\/uploads\/2021\/12\/Welkom-bij-Picademie.nl-Google-UK-engels-man.mp3\"><\/audio><figcaption>Google UK &#8211; Engelse man<\/figcaption><\/figure>\n\n\n\n<p>Je hoort direct het verschil. Voor de verstaanbaarheid moet je dus een stem kiezen die voor de taal bestemd is. Voor de Engelse stem wordt de tekst dus &#8216;<span class=\"has-inline-color has-vivid-purple-color\">welcome to picademie.nl<\/span>&#8216;.<\/p>\n\n\n\n<figure class=\"wp-block-audio\"><audio controls src=\"https:\/\/www.picademie.nl\/wp-content\/uploads\/2021\/12\/Welcome-to-Picademie.nl-Google-UK-engels-man.mp3\"><\/audio><figcaption>Google UK &#8211; Engelse man<\/figcaption><\/figure>\n\n\n\n<p>Open de <a rel=\"noreferrer noopener\" href=\"https:\/\/onlinetonegenerator.com\/voice-generator.html\" target=\"_blank\">link naar de spraakgenerator<\/a> en probeer wat tekst en selecteer verschillende stemmen. Bepaal de stem die je straks wilt gebruiken om jouw commando&#8217;s uit te laten spreken.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.picademie.nl\/wp-content\/uploads\/2021\/12\/spraakgenerator.png\" alt=\"\" class=\"wp-image-7604\" width=\"380\" height=\"363\" srcset=\"https:\/\/www.picademie.nl\/wp-content\/uploads\/2021\/12\/spraakgenerator.png 424w, https:\/\/www.picademie.nl\/wp-content\/uploads\/2021\/12\/spraakgenerator-300x287.png 300w\" sizes=\"auto, (max-width: 380px) 100vw, 380px\" \/><\/figure>\n\n\n\n<p>Mocht je een andere stem dan de Nederlandse mooi vinden, dan zal je merken dat de uitspraak van de Nederlandse tekst erg lastig blijkt. Zoals bij de zin &#8216;<span class=\"has-inline-color has-vivid-purple-color\">hallo hoe gaat het met jou?<\/span>&#8216; voor de Engelse stem. <\/p>\n\n\n\n<p>Zelf heb ik nog nooit een Engelse stem perfect Nederlands horen spreken. Je zou om kunnen kijken of er een spraakgenerator te vinden is waarbij je de stemmen zelf kunt modelleren. Mocht je een goede vinden? <a href=\"https:\/\/www.picademie.nl\/index.php\/contact\/\">Laat het me weten!<\/a><\/p>\n\n\n\n<figure class=\"wp-block-audio\"><audio controls src=\"https:\/\/www.picademie.nl\/wp-content\/uploads\/2021\/12\/gb-doet-nl1.mp3\"><\/audio><\/figure>\n\n\n\n<p>Je kan het uitspraakprobleem een beetje oplossen door de tekst fonetisch te schrijven. Nadeel is wel dat er altijd een accent te horen zal zijn, een harde &#8216;g&#8217; kent de Engelse stem niet. De tekst wordt dan ongeveer als volgt &#8216;<span class=\"has-inline-color has-vivid-purple-color\">hallo who gaat het met jow?<\/span>&#8216;. Je kunt zelf allerlei klankaanpassingen proberen om de zin zo mooi mogelijk uitgesproken te krijgen.<\/p>\n\n\n\n<figure class=\"wp-block-audio\"><audio controls src=\"https:\/\/www.picademie.nl\/wp-content\/uploads\/2021\/12\/gb-doet-nl2.mp3\"><\/audio><\/figure>\n\n\n\n<p><strong>Audio opnameprogramma<\/strong><br>Helaas hebben de meeste (gratis) spraakgeneratoren geen mogelijkheid om het audiobestand van de omgezette tekst te downloaden. Ik zal je laten zien hoe je met een opnameprogramma het audiobestand kunt maken.<\/p>\n\n\n\n<p>Om audiobestanden te bewerken gebruik ik het (gratis) programma <span class=\"has-inline-color has-vivid-cyan-blue-color\"><a href=\"https:\/\/www.audacityteam.org\/download\/\" target=\"_blank\" rel=\"noreferrer noopener\">Audacity<\/a><\/span>. Met <span class=\"has-inline-color has-vivid-cyan-blue-color\">Audacity <\/span>ben je in staat de bron te selecteren. Ik heb bij mij de <span class=\"has-inline-color has-vivid-cyan-blue-color\">pc luidsprekers<\/span><span class=\"has-inline-color has-black-color\"> als bron <\/span>gekozen. Daarmee kan ik alles opnemen wat als geluid uit de luidsprekers komt. <\/p>\n\n\n\n<p>Om in <span class=\"has-inline-color has-vivid-cyan-blue-color\">Audacity<\/span> de luidsprekers te selecteren ga je in het bovenstaande tabblad naar <span class=\"has-inline-color has-vivid-cyan-blue-color\">Bewerken -&gt; Voorkeuren<\/span> of geef je <span class=\"has-inline-color has-vivid-cyan-blue-color\">Ctrl-P<\/span>. Het volgende venster opent zich.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"561\" height=\"487\" src=\"https:\/\/www.picademie.nl\/wp-content\/uploads\/2021\/12\/voorkeur2.png\" alt=\"\" class=\"wp-image-7645\" srcset=\"https:\/\/www.picademie.nl\/wp-content\/uploads\/2021\/12\/voorkeur2.png 561w, https:\/\/www.picademie.nl\/wp-content\/uploads\/2021\/12\/voorkeur2-300x260.png 300w\" sizes=\"auto, (max-width: 561px) 100vw, 561px\" \/><figcaption>Audacity voorkeuren <\/figcaption><\/figure>\n\n\n\n<p>Hierboven zie je dat onder <strong>Apparaten<\/strong> -&gt; <strong>Opnemen &#8211; Apparaat:<\/strong> <span class=\"has-inline-color has-vivid-cyan-blue-color\">Stereo-Mix (Realtek High Defini..)<\/span> en bij <strong>Kanalen:<\/strong> <span class=\"has-inline-color has-vivid-cyan-blue-color\">2 (Stereo)<\/span> geselecteerd is. <\/p>\n\n\n\n<p><strong>Check<\/strong><br>Bovenstaande interface is dezelfde als die geselecteerd is bij de pc via <strong>Start -&gt; Instellingen -&gt; Systeem -&gt; Geluid<\/strong>. Dit kun je ook controleren door op de pc met de rechtermuis op het volume symbooltje te klikken en op <strong>Geluidsinstellingen openen<\/strong> te klikken. De instellingen van <strong>Geluid <\/strong>opent zich. Je zou dezelfde geselecteerde interface <span class=\"has-inline-color has-vivid-cyan-blue-color\">(Realtek High Defini)<\/span> moeten zien als bij de voorkeuren van Audacity.<\/p>\n\n\n\n<p>Het enige nadeel bij het opnemen van de luidsprekers is dat je tijdens de opname geen andere programma&#8217;s kunt aanklikken, anders zouden er systeemgeluiden in de opname terecht kunnen komen. Om dit te voorkomen kan je de kanalen die je niet wilt opnemen uitzetten. Dit doe je door in MS Windows rechts onderin het scherm met de rechter muisknop op het volume symbooltje te klikken en vervolgens op <strong>Volumemixer openen<\/strong> te klikken. <\/p>\n\n\n\n<p>In dit voorbeeld zet ik het kanaal <span class=\"has-inline-color has-vivid-cyan-blue-color\">Systeemgeluiden<\/span> uit door op het luidsprekertje te klikken. Zo kun je tijdens de geluidsopname ongestoord andere dingen op je pc doen.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"375\" height=\"347\" src=\"https:\/\/www.picademie.nl\/wp-content\/uploads\/2021\/12\/volume.png\" alt=\"\" class=\"wp-image-7639\" srcset=\"https:\/\/www.picademie.nl\/wp-content\/uploads\/2021\/12\/volume.png 375w, https:\/\/www.picademie.nl\/wp-content\/uploads\/2021\/12\/volume-300x278.png 300w\" sizes=\"auto, (max-width: 375px) 100vw, 375px\" \/><\/figure>\n\n\n\n<p><strong>Opgelezen tekst opnemen met Audacity<\/strong><br>Hieronder ga ik ervan uit dat de input in het opnameprogramma goed staat en dat je het geluid van je pc luidspreker kunt opnemen.<\/p>\n\n\n\n<ol class=\"wp-block-list\"><li>Start <span class=\"has-inline-color has-vivid-cyan-blue-color\"><a href=\"https:\/\/www.audacityteam.org\/download\/\">Audacity <\/a><\/span>op<\/li><li>Start de opname (knop met rode bolletje)<\/li><li>Open de <span class=\"has-inline-color has-vivid-cyan-blue-color\"><a href=\"https:\/\/onlinetonegenerator.com\/voice-generator.html\">spraakgenerator<\/a><\/span><\/li><li>Geef hier de gewenste tekst in, bijvoorbeeld &#8216;<em><span class=\"has-inline-color has-vivid-cyan-blue-color\">Hallo wereld<\/span><\/em>&#8216;<\/li><li>Druk in de spraakgenerator op <span class=\"has-inline-color has-vivid-cyan-blue-color\">Play<\/span><\/li><li>Als de tekst uitgesproken is stop je de opname (knop met vierkant blokje)<\/li><li>Ga in de opname staan en verwijder de &#8216;stille&#8217; ruimte door hierin te slepen en deze te deleten<\/li><li>Ga naar <span class=\"has-inline-color has-vivid-cyan-blue-color\">Bestand -&gt; Exporteren -&gt; Exporteren als MP3<\/span><\/li><li>Geef het bestand een passende naam, zoals &#8216;<span class=\"has-inline-color has-vivid-cyan-blue-color\">hallo_wereld<\/span>&#8216; en klik op <span class=\"has-inline-color has-vivid-cyan-blue-color\">Opslaan<\/span><\/li><\/ol>\n\n\n\n<p>Je bent nu klaar met opnemen. Je kunt het bestand dat op je pc staat afspelen en verwerken in een script.<\/p>\n\n\n\n<p><strong>Bestand op de Raspberry Pi met Python afspelen<\/strong><br>Om het audiobestand af te kunnen spelen gebruik ik <span class=\"has-inline-color has-vivid-cyan-blue-color\">OMXplayer<\/span>. OMXPlayer is een van de beste mediaspelers die je op de Raspberry Pi kunt gebruiken omdat hij is geoptimaliseerd voor de hardware van de Pi. In deze tutorial gebruiken we OMXplayer alleen om een audiobestand af te spelen.<\/p>\n\n\n\n<p>Om OMXplayer te installeren moeten we eerst de Raspberry Pi OS bijwerken. Voer de volgende twee opdrachten uit op het systeem om de pakketlijst bij te werken en upgrade eventuele verouderde pakketten.<\/p>\n\n\n\n<p><code><span class=\"has-inline-color has-vivid-cyan-blue-color\">sudo apt update<\/span><\/code> <\/p>\n\n\n\n<p><code><span class=\"has-inline-color has-vivid-cyan-blue-color\">sudo apt upgrade<\/span><\/code><\/p>\n\n\n\n<p>Nadat je de Pi hebt bijgewerkt, kunnen we nu verder gaan met het installeren van OMXplayer. Omdat de mediaspeler beschikbaar is vanuit de offici\u00eble pakketrepository, is het installeren ervan net zo eenvoudig als het uitvoeren van een enkele opdracht. Om OMXplayer te installeren, hoef je alleen maar de volgende opdracht uit te voeren.<\/p>\n\n\n\n<p><code><span class=\"has-inline-color has-vivid-cyan-blue-color\">sudo apt install omxplayer<\/span><\/code><\/p>\n\n\n\n<p>Je kan controleren of  OMXplayer succesvol ge\u00efnstalleerd is door de volgende opdracht uit te voeren. Als je het pakket op je Raspberry Pi hebt ge\u00efnstalleerd, krijg je een lijst met opties die je kunt gebruiken om de mediaspeler te bedienen.<\/p>\n\n\n\n<p><code><span class=\"has-inline-color has-vivid-cyan-blue-color\">omxplayer<\/span><\/code><\/p>\n\n\n\n<p>Om een audiobestand in de terminal, achter de prompt, af te spelen geef je het volgende commando:<\/p>\n\n\n\n<p><code><span class=\"has-inline-color has-vivid-cyan-blue-color\">omxplayer -o local pad_naar_bestand.mp3<\/span><\/code><\/p>\n\n\n\n<p>Door de parameter <span class=\"has-inline-color has-vivid-cyan-blue-color\">-o<\/span> te gebruiken, kunnen we de naam van het apparaat specificeren waarnaar we de audio-uitvoer willen. De mogelijke apparaat opties zijn:<\/p>\n\n\n\n<p><strong><span class=\"has-inline-color has-vivid-red-color\">hdmi<\/span> <\/strong>\u2013 Door dit apparaat te gebruiken, wordt audio uitgevoerd naar de HDMI-aansluiting.<br><span class=\"has-inline-color has-vivid-red-color\"><strong>local<\/strong><\/span> \u2013 Het is ook mogelijk om de uitvoer naar de analoge hoofdtelefoonaansluiting (3mm) te forceren door deze optie te gebruiken.<br><span class=\"has-inline-color has-vivid-red-color\"><strong>both<\/strong><\/span> &#8211; Voert audio uit naar zowel de HDMI- als analoge verbindingen (3mm) op de Pi.<br><span class=\"has-inline-color has-vivid-red-color\"><strong>alsa[:device]<\/strong><\/span> \u2013 Je kan ook een bepaald ALSA-apparaat specificeren waarnaar je de audio wilt uitvoeren.<\/p>\n\n\n\n<p><strong>OMXplayer afspelen in Python<\/strong><br>Om OMXplayer in Python te kunnen gebruiken, zal de <span class=\"has-inline-color has-vivid-cyan-blue-color\">os-bibliotheek<\/span> geladen moeten worden. Vervolgens kan dezelfde opdrachtregel gebruikt worden zoals deze in de terminal gebruikt werd. <\/p>\n\n\n\n<p><code><span class=\"has-inline-color has-vivid-cyan-blue-color\">os.system('omxplayer -o local pad_naar_bestand')<\/span><\/code><\/p>\n\n\n\n<p>Om het audiobestand op de achtergrond te draaien en geen commandostatus te ontvangen geef je het volgende (aangepaste) commando:<\/p>\n\n\n\n<p><code><span class=\"has-inline-color has-vivid-cyan-blue-color\">os.system('omxplayer -o local systeem.mp3 &gt;\/dev\/null 2&gt;&amp;1 &amp;')<\/span><\/code><\/p>\n\n\n\n<p>Nu heb je alle informatie om je eigen script te maken. Hieronder heb ik een aantal audiobestanden en een script klaargezet om ze af te kunnen spelen.<\/p>\n\n\n\n<div class=\"wp-block-file\"><a href=\"https:\/\/www.picademie.nl\/wp-content\/uploads\/2021\/12\/aStatus.zip\">Download hier het status-script (gezipt)<\/a><a href=\"https:\/\/www.picademie.nl\/wp-content\/uploads\/2021\/12\/aStatus.zip\" class=\"wp-block-file__button\" download>Download<\/a><\/div>\n\n\n\n<div class=\"wp-block-file\"><a href=\"https:\/\/www.picademie.nl\/wp-content\/uploads\/2021\/12\/Spraak-en-geluidsbestanden.zip\">Download hier de spraak-en-geluidsbestanden (gezipt)<\/a><a href=\"https:\/\/www.picademie.nl\/wp-content\/uploads\/2021\/12\/Spraak-en-geluidsbestanden.zip\" class=\"wp-block-file__button\" download>Download<\/a><\/div>\n\n\n\n<p><strong>Verhogen toegankelijkheid van de toepassing <\/strong><br>Nu ben je in staat om de status van een toepassing op de Raspberry Pi ook via stemgeluid weer te geven. Hierdoor kunnen bijvoorbeeld slechtzienden horen of de door hun aangeboden toegangspas geaccepteerd is of niet of wat de status van het systeem is. Maak er iets moois van!<\/p>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"Raspberry Pi - Python script (toegangscontrole) met voicestatus\" width=\"500\" height=\"281\" src=\"https:\/\/www.youtube.com\/embed\/0G7JZfGoyw0?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/div><figcaption>Toegangscontrole (Python script) met voicestatus<\/figcaption><\/figure>\n\n\n\n<p><em>Have A Nice Day!<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<div class=\"mh-excerpt\"><p>Steeds meer (openbare) systemen hebben naast displays en led aanduidingen ook audiosystemen ingebouwd om bijvoorbeeld slechtzienden en visueel gehandicapten er gebruik van te kunnen laten <a class=\"mh-excerpt-more\" href=\"https:\/\/www.picademie.nl\/index.php\/2021\/12\/21\/7576\/\" title=\"Gesproken status in Python\">[&#8230;]<\/a><\/p>\n<\/div>","protected":false},"author":1,"featured_media":7577,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[1],"tags":[300,296,297,303,295,302,304,299,298,26],"class_list":["post-7576","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized","tag-audacity","tag-audio","tag-audiospeler","tag-geluid","tag-omxplayer","tag-opname","tag-speech","tag-spraak","tag-spraakgenerator","tag-video"],"jetpack_featured_media_url":"https:\/\/www.picademie.nl\/wp-content\/uploads\/2021\/12\/tekstnaarspraak.png","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.picademie.nl\/index.php\/wp-json\/wp\/v2\/posts\/7576","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.picademie.nl\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.picademie.nl\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.picademie.nl\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.picademie.nl\/index.php\/wp-json\/wp\/v2\/comments?post=7576"}],"version-history":[{"count":0,"href":"https:\/\/www.picademie.nl\/index.php\/wp-json\/wp\/v2\/posts\/7576\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.picademie.nl\/index.php\/wp-json\/wp\/v2\/media\/7577"}],"wp:attachment":[{"href":"https:\/\/www.picademie.nl\/index.php\/wp-json\/wp\/v2\/media?parent=7576"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.picademie.nl\/index.php\/wp-json\/wp\/v2\/categories?post=7576"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.picademie.nl\/index.php\/wp-json\/wp\/v2\/tags?post=7576"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}