Je kunt tegenwoordig elke mobiele telefoon gebruiken als voice recorder, maar de kwaliteit daarvan is niet altijd bijster goed. Kunnen we misschien zelf iets in elkaar knutselen, met bijvoorbeeld een klein Pico Zero W-bordje?
Wim Dewijngaert
Lekker knutselen met een Pico Zero W- bordje, daar draait een hobbyist z’n hand niet voor om! Maar het blijkt toch iets pittiger dan verwacht: een Raspberry Pi kan immers het analoge signaal van een condensatormicrofoontje niet verwerken wegens een gebrek aan analoge poorten. Hoe krijg je dit dan voor elkaar?Hoe krijg je dit dan voor elkaar?
De oplossing ligt in het gebruik van een MEMS-microfoon, die de signalen meteen ook digitaal doorstuurt naar onze Raspberry Pi. Dit heeft als bijkomend voordeel dat er minder ruis en storingen van bijvoorbeeld een voedingsbron in het geluid te horen zijn. In ons project gebruiken we hiervoor een INMP441 van Youmile, makkelijk te vinden op Amazon voor net 6 euro. Een Pico Zero W met voorgesoldeerde headers en bijhorende voeding valt op internet te scoren rond de 35 euro.
INSTALLATIE BESTURINGSSYSTEEM
Als eerste plaatsen we het besturingssysteem op een sd-kaartje. Voor Windows-gebruikers lukt dit het makkelijkst met de Windows Raspberry Pi Imager (https://www.raspberrypi.com/software). Plaats een sd-kaart van minstens 2GB in je Windows-computer en start het programma. Kies bij Raspberry Pi Device voor Raspberry PI Zero 2 W. Als OS neem je Raspberry Pi (other) en vervolgens Raspberry OS Lite (32-bit) Bookworm.
Daarna komt de vraag of je de instellingen wil aanpassen. Druk op Yes en vervolgens Customize settings. Kies een hostname (bijvoorbeeld ‘soundrecorder’) en een gebruikersnaam en password (gebruik voor de makkelijkheid ‘pi’ en ‘raspberry’, dat zijn de standaard instellingen). Tot slot vul je de gegevens van je wifi-netwerk in. Check ook even of bij Services de SSH aanstaat.
Als het schrijven klaar is, plaats je de sd-kaart in je Pico Zero. Daarna koppel je de voeding aan en wacht je een paar minuten tot het besturingssysteem opstart en verbonden is met het netwerk. We moeten nu het IP-adres van de Raspberry Pi vinden. Met de applicatie Fing op je mobiele telefoon kun je dit makkelijk doen aan de hand van de hostname die je hebt gekozen tijdens de installatie.
Gebruik daarna Putty (of een ander SSH programma) om een verbinding te maken met de Raspberry Pi, en breng het OS naar de laatste stand met de commando’s:
sudo apt-get -y update
sudo apt-get -y upgrade
Vervolgens installeer je FFMPEG:
sudo apt install ffmpeg
De GPIO-pinnen op de Raspberry Pi kunnen worden omgeschakeld naar zes alternatieve functies. Om onze digitale microfoon te kunnen gebruiken, hebben we mode Alt0 nodig, waarbij de GPIO-pinnen 18, 19, 20 en 21 gebruikt worden voor respectievelijk de Bit Clock, de Left/Right clock, Data In en Data Out van het I2S-protocol. Dit is een vrij omslachtige procedure, dus we nemen een kortere weg en doen alsof onze microfoon deel uitmaakt van het open-sourceproject Google Voice Hat, wat een vergelijkbare microfoon gebruikt. Met één aanpassing in het configuratiebestand wordt ons zo veel werk uit handen genomen.
Tik:
sudo nano /boot/firmware/config.txt
En helemaal onderaan voeg je toe:
dtoverlay=googlevoicehat-soundcard
AANSLUITINGEN
Haal de stroom van de Raspberry Pi en verbind de microfoon op de volgende manier:
VDD naar pin 1
GND naar pin 6
SCK naar pin 12 (GPIO 18)
L/R naar pin 14
WS naar pin 35 (GPIO 19)
SD naar pin 38 (GPIO 20)
Door L/R met de ground te verbinden, geven we aan dat we de microfoon in mono-mode willen gebruiken (met een tweede microfoon kun je optioneel ook een stereogeluidsbeeld opnemen).
LAATSTE PUNTJES
Start de Raspberry Pi opnieuw op, breng een SSH-verbinding tot stand en tik nu dit commando in:
arecord -l
Als alles goed gaat, krijg je dit antwoord, wat wil zeggen dat de geluidskaart gevonden is:
**** List of CAPTURE Hardware Devices ****
card 0: sndrpigooglevoi [snd_rpi_googlevoicehat_soundcar], device 0: Google voiceHAT SoundCard HiFi voicehat-hifi-0 [Google voiceHAT SoundCard HiFi voicehat-hifi-0]
Subdevices: 1/1
Subdevice #0: subdevice #0
Het geluidsvolume van de opnames is in eerste instantie veel te laag. Dit kunnen we oplossen door
nano ~/.asoundrc
in te tikken en daarin
volgend bestand te plaatsen:
pcm.softvol {
type softvol
slave.pcm dmix
control {
name Master
card 0
}
}
pcm.micboost {
type route
slave.pcm dsnoop
ttable {
0.0 35.0
1.1 35.0
}
}
pcm.!default {
type asym
playback.pcm "plug:softvol"
capture.pcm "plug:micboost"
}
ctl.!default {
type hw
card 0
}
Vervolgens kopiëren we dit bestand ook naar een andere locatie:
sudo cp ~/.asoundrc /etc/asound.conf
KLAAR? ACTIE!
Normaal gesproken wordt voor het maken van geluidsopnames het programma arecord aanbevolen, maar deze software kan alleen het ruimtevretende wav-formaat gebruiken. Met FFmpeg kunnen we ons bestand wél bewaren in het mp3-formaat, maar door een bug wordt bij het wegschrijven honderd procent van de processor gebruikt. Met de extra parameter readrate 1 kunnen we dit alsnog beperken.
Om een mono opname van 60 seconden te starten in mp3-formaat, gebruik je het volgende commando:
ffmpeg -readrate 1 -f alsa -i default -ar 22050 -t 60 -ac 1 -ab 128k bestandsnaam.mp3
Uiteraard kun je naar hartelust met de parameters experimenteren.