Microphone array and audio recording#
Microphone hardware specifications#
TIAGo Pro, TIAGo Pro Head and ARI have a ReSpeaker Mic Array V2.0 consisting of 4 microphones, positioned in the head (TIAGo Pro) or in the torso, just below the touch-screen (ARI).

On robots equipped with a reSpeaker microphone, the microphone is connected via USB to the main PC. The PC then outputs audio through the robot’s two speakers, located at each lateral side of the torso (ARI) or under the cheeks (TIAGo Pro).
Dimensions |
70mm x70mm x13.3mm |
Weight |
G.W 70g |
Sensitivity |
-26 dBFS (Omnidirectional) |
Acoustic overload point |
120 dBSPL |
SNR |
61 dB |
Power Supply |
5V DC from Micro USB or expansion header |
Power consumption |
5V, 180mA with led on and 170mA with led off |
Max Sample Rate |
16Khz |
Display |
12 programmable RGB LED indicators |
Note
By default, the microphone LEDs are configured to turn blue when the microphone hears something. In addition, a light blue LED indicates the current sound source direction.
The parameter enable_leds
can be set to False
in the respeaker_ros
launch file to disable this behaviour.
The ReSpeaker microphone also implements several audio processing directly on the hardware:
far-field Voice Activity Detection (up to 5m away);
Direction of Arrival (DoA) estimation;
Beamforming (BF) to focus on sound coming from a specific source;
noise suppression;
de-reverberation;
acoustic echo cancellation, enabling the robot to ignore its own voice.
Caution
TIAGo (v1) features a simple stereo microphone. Some of the features available on robots equipped with the reSpeaker microphone array (like sound source localisation or noise cancellation) are therefore not available on this robot.
The Andrea SuperBeam Stereo Array Microphone is integrated just below the head of the robot. The specifications of the audio card are presented in the first table and the specifications of the Stereo Array Microphone are detailed in the second table:
Manufacturer |
Andrea Electronics |
Model |
SuperBeam Stereo Array Microphone |
Mic supply voltage |
1.4-5.0 VDC |
Supply bias resistor |
2.2k-39.9k Ohm |
Operating current (each channel) |
0.5 mA |
Output impedance at 1 kHz |
200 Ohm |
Max input sound level at 1 kHz, 3% THD |
115 dB |
Output signal level at THD < 3% @ 1 kHz |
24-120 mVrms |
Sensitivity at 1 kHz (0 dB = 1 V/Pa Vdc=1.6 V) |
-40 to -37 dBV |
Frequency response at 3 dB variation noise |
20 uVrms |
Operating temperature |
0-70C◦C |
Recommended operating distance |
30.5-122 cm |
Acoustic signal reduction at 1 kHz outside of 30◦beamform |
15-30 dB |
Noise reduction |
20-25 dB |
Manufacturer |
Andrea Electronics |
Model |
PureAudio USB-SA |
Supply voltage |
4.5 - 5.5 VDC |
Total power consumption |
120 mA |
A/D conversion resolution |
16 bit |
THD + N |
-84 dB |
Supply bias resistor |
2.2 kOhm @ 3.3 VDC |
Frequency response |
20-20000 Hz |
Input range |
0 - 1.25 Vrms |
Dynamic range |
95 dB |
Record gain range |
-6 to 33 dB |
ROS API#
The main ROS topic for audio, available on all robots, is /audio_in/raw. The raw audio frames are published on this topic.
Advanced API for the reSpeaker microphone#
PAL relies on an heavily modified version of the open-source respeaker_ros driver.
It exposes the following topics:
/audio_in/raw: Merged audio channel of the 4 microphones (alias for /audio_in/channel0).
/audio_in/channel0: Merged audio channel of the 4 microphones
/audio_in/channel1: Audio stream from the first microphone.
/audio_in/channel2: Audio stream from the second microphone.
/audio_in/channel3: Audio stream from the third microphone.
/audio_in/channel4: Audio stream from the fourth microphone.
/audio_in/channel5: Monitor audio stream from the audio input (used for self-echo cancellation).
/audio_in/voice_detected: Publishes a boolean indicating if a voice is currently detected (ie, whether someone is currently speaking)
/audio_in/speech: raw audio data of detected speech (published once the person has finished speaking).
/audio_in/sound_direction: The estimated Direction of Arrival of the detected sound.
/audio_in/sound_localization: The estimated sound source location.
Recording audio with ROS#
To directly record an audio topic to a wav file, run:
ros2 launch audio_play play.launch.py audio_topic:=/audio_in/raw format:=wave dst:=my_audio.wav
Audio can also be recorded as a rosbag, for later processing or replay:
ros2 bag record -o audio_sample.bag /audio_in/raw