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
| Parameter | Default Value |
|---|---|
| Socket | /run/audio_service/audio_service.sock |
| Log | /var/log/audio_service/audio_service.log |
| Binary | /oem/usr/bin/audio_service |
| Volume state file | /userdata/audio_service/playback_volume |
Command-line Parameters
audio_service [--socket PATH] [--volume-state PATH]
| Parameter | Description |
|---|---|
--socket PATH | Unix domain socket path for service communication |
--volume-state PATH | File 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 ./build/bin/audio_service
./build/bin/audio_service --socket /tmp/audio_service.sock
Startup
/etc/init.d/S53audio_service start
/etc/init.d/S53audio_service status
/etc/init.d/S53audio_service restart
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:
./build/bin/audio_service_cli --socket /run/audio_service/audio_service.sock health
./build/bin/audio_service_cli --socket /run/audio_service/audio_service.sock get-volume
./build/bin/audio_service_cli --socket /run/audio_service/audio_service.sock set-volume --volume 80
Recording:
./build/bin/audio_service_cli --socket /run/audio_service/audio_service.sock record-stream --seconds 3 > /tmp/record.pcm
Playback:
cat /tmp/record.pcm | ./build/bin/audio_service_cli --socket /run/audio_service/audio_service.sock play-stream --rate 16000 --ch 1 --bits 16
Agent Configuration
[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:
- Start a recording session;
- Read PCM chunks;
- Detect speech boundaries with RKNN Silero VAD;
- 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.