For a number of experiments we will need to manipulate audio signals with the Raspberry Pi. Here we give a few hints on how to get audio to work.
In order to record audio, we need to connect a microphone to the Pi. If you connect a USB mic, you can ensure that the Pi recognizes it by typing lsusb at the command line
pi@raspberrypi ~ $ lsusb
Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp.
Bus 001 Device 004: ID 0000:0538
Bus 001 Device 006: ID 0d8c:013c C-Media Electronics, Inc. CM108 Audio Controller
Bus 001 Device 005: ID 1c4f:0002 SiGma Micro Keyboard TRACER Gamma Ivory
Here we have connected the C-Media USB Microphone.
You can obtain the device details by typing arecord -l
pi@raspberrypi ~ $ arecord -l
**** List of CAPTURE Hardware Devices ****
card 1: Device [USB PnP Sound Device], device 0: USB Audio [USB Audio]
Subdevices: 1/1 Subdevice #0: subdevice #0These device details will be useful in recording audio.
Installing SoX for audio recording
SoX is a program for recording and manipulating audio. You can install it by typing
sudo apt-get install sox
at the command line. There are two functions play and rec which can then be used for recording and playback. To record some speech, follow the following steps
- set the audio driver by typing export AUDIODRIVER=alsa
- set the recoding device by typing export AUDIODEV=hw:<card number>,<device number>. The card and device numbers of the recording device are obtained from arecord -l. Using the result above we type export AUDIODEV=hw:1,0
- Record some audio by typing rec -c 1 -r 8000 speech.wav trim 0 2 and pressing Enter. This command will record a single channel at 8kHz and save the resulting speech in speech.wav. The recording will last 2 seconds.
To playback the audio recorded, we follow the following steps
- Plug in a set of head phones in the audio jack.
- Set the audio output to the headphones by typing amixer cset numid=3 1 at the command line .
- Determine the playback device details using aplay -l
- Set the audio device using AUDIODEV=hw:<card number>,<device number>.
- Type play speech.wav
- If the volume is too low type alsamixer and adjust the volume using the arrow keys.