Skip to main content

Audio Service: Audio Recording and Playback Service

audio_service is a long-running C++ service that provides recording, playback, and volume control capabilities. The Go Agent's device voice pipeline and the audio_volume tool call this service through a Unix domain socket.

Default Parameters​

ParameterDefault Value
Socket/run/audio_service/audio_service.sock
Log/var/log/audio_service/audio_service.log
Binary/usr/lib/aiden/audio_service
Volume state file/userdata/audio_service/playback_volume

Command-line Parameters​

audio_service [--socket PATH] [--volume-state PATH]
ParameterDescription
--socket PATHUnix domain socket path for service communication
--volume-state PATHFile path for persisting playback volume across restarts; default /userdata/audio_service/playback_volume

When run directly during development, it also defaults to /run/audio_service/audio_service.sock, which can be overridden via a parameter or environment variable:

AUDIO_SERVICE_SOCKET=/tmp/audio_service.sock /usr/lib/aiden/audio_service
/usr/lib/aiden/audio_service --socket /tmp/audio_service.sock

Startup​

systemctl start aiden-audio.service
systemctl status aiden-audio.service --no-pager
systemctl restart aiden-audio.service

CLI​

audio_service_cli [--socket PATH] <command>

Commands:
health
record-stream [--seconds N]
play-stream [--rate N] [--ch N] [--bits N]
get-volume
set-volume --volume N

Examples:

audio_service_cli --socket /run/audio_service/audio_service.sock health
audio_service_cli --socket /run/audio_service/audio_service.sock get-volume
audio_service_cli --socket /run/audio_service/audio_service.sock set-volume --volume 80

Recording:

audio_service_cli --socket /run/audio_service/audio_service.sock record-stream --seconds 3 > /tmp/record.pcm

Playback:

cat /tmp/record.pcm | audio_service_cli --socket /run/audio_service/audio_service.sock play-stream --rate 16000 --ch 1 --bits 16

Agent Configuration​

[voice_settings.classic.audio]
socket = "/run/audio_service/audio_service.sock"
sample_rate = 16000
channels = 1
bit_width = 16

In voice mode, the Agent uses the audio service to:

  1. Start a recording session;
  2. Read PCM chunks;
  3. Detect speech boundaries with RKNN Silero VAD;
  4. Start a playback session and write PCM when playback is needed.

Volume​

audio_service exposes a logical volume of 0..100. The underlying device maximum volume can be initialized with:

scripts/setup_audio_volume.sh

See Volume Initialization and Adjustment for details.