Audio Control API
Audio Client
Provides audio capture, playback, and device enumeration through the camera-daemon gRPC service.
- class neoruntime_ipc_sdk.audio.AudioDevice(name: 'str', description: 'str')[source]
Bases:
object- name: str
- description: str
- __init__(name, description)
- class neoruntime_ipc_sdk.audio.AudioStatus(capturing: 'bool', playing: 'bool', device: 'str', sample_rate: 'int', channels: 'int', codec: 'str', volume: 'float', mute: 'bool')[source]
Bases:
object- capturing: bool
- playing: bool
- device: str
- sample_rate: int
- channels: int
- codec: str
- volume: float
- mute: bool
- __init__(capturing, playing, device, sample_rate, channels, codec, volume, mute)
- class neoruntime_ipc_sdk.audio.AudioClient(endpoint=None)[source]
Bases:
GrpcClientAudio control client for the camera-daemon audio HAL.
- Usage:
audio = AudioClient()
# List capture devices devices = audio.list_capture_devices()
# Start capture audio.start_capture(codec=”aac”, sample_rate=48000)
# Check status status = audio.get_status() print(status.capturing)
# Adjust volume audio.set_config(volume=0.8)
# Stop capture audio.stop_capture()
- list_capture_devices()[source]
List available audio capture devices.
- list_playback_devices()[source]
List available audio playback devices.
- start_capture(device='', sample_rate=0, channels=0, codec='', bitrate=0)[source]
Start audio capture. Leave parameters at 0/empty to use defaults.
- stop_capture()[source]
Stop audio capture.
- start_playback(device='', sample_rate=0, channels=0)[source]
Start audio playback.
- stop_playback()[source]
Stop audio playback.
- get_status()[source]
Get current audio status.
- set_config(device='', sample_rate=0, channels=0, codec='', bitrate=0, volume=-1.0, mute=None)[source]
Update audio configuration (volume, mute, codec, etc.).
Leave parameters at defaults to keep current values. Volume -1.0 means don’t change; mute None means don’t change.
- stream_pcm(pcm_iter, sample_rate=48000, channels=1, fmt='S16LE')[source]
Stream PCM audio chunks to device for two-way talk (playback).
- stream_pcm_file(path, chunk_size=4096, sample_rate=48000, channels=1, fmt='S16LE')[source]
Stream a raw PCM file to device for playback.
AudioClient
- class neoruntime_ipc_sdk.AudioClient(endpoint=None)[source]
Bases:
GrpcClientAudio control client for the camera-daemon audio HAL.
- Usage:
audio = AudioClient()
# List capture devices devices = audio.list_capture_devices()
# Start capture audio.start_capture(codec=”aac”, sample_rate=48000)
# Check status status = audio.get_status() print(status.capturing)
# Adjust volume audio.set_config(volume=0.8)
# Stop capture audio.stop_capture()
- list_capture_devices()[source]
List available audio capture devices.
- list_playback_devices()[source]
List available audio playback devices.
- start_capture(device='', sample_rate=0, channels=0, codec='', bitrate=0)[source]
Start audio capture. Leave parameters at 0/empty to use defaults.
- stop_capture()[source]
Stop audio capture.
- start_playback(device='', sample_rate=0, channels=0)[source]
Start audio playback.
- stop_playback()[source]
Stop audio playback.
- get_status()[source]
Get current audio status.
- set_config(device='', sample_rate=0, channels=0, codec='', bitrate=0, volume=-1.0, mute=None)[source]
Update audio configuration (volume, mute, codec, etc.).
Leave parameters at defaults to keep current values. Volume -1.0 means don’t change; mute None means don’t change.
- stream_pcm(pcm_iter, sample_rate=48000, channels=1, fmt='S16LE')[source]
Stream PCM audio chunks to device for two-way talk (playback).
- stream_pcm_file(path, chunk_size=4096, sample_rate=48000, channels=1, fmt='S16LE')[source]
Stream a raw PCM file to device for playback.
Data Types
AudioDevice
AudioStatus
Usage Examples
Query devices and status
from neoruntime_ipc_sdk import AudioClient
audio = AudioClient()
# List capture / playback devices
for dev in audio.list_capture_devices():
print(f"capture: {dev.name} ({dev.description})")
for dev in audio.list_playback_devices():
print(f"playback: {dev.name} ({dev.description})")
# Current runtime status
status = audio.get_status()
print(f"capturing: {status.capturing}, playing: {status.playing}, "
f"{status.sample_rate}Hz {status.channels}ch {status.codec}")
Start / stop capture
# Start capture with explicit parameters (0/empty keeps defaults)
audio.start_capture(sample_rate=16000, channels=1, codec="aac")
# Subscribe to audio frames via AudioStreamClient
# (see the audio streaming API)...
audio.stop_capture()
Play a file (intercom playback)
# Blocking playback of a PCM file
audio.start_playback(sample_rate=48000, channels=1)
audio.stream_pcm_file(
"/app/audio/notice.pcm",
sample_rate=48000, channels=1, fmt="S16LE",
)
audio.stop_playback()
Stream PCM (live intercom)
# pcm_iter yields PCM chunks; playback proceeds while chunks arrive
def pcm_chunks():
for chunk in network_receive():
yield chunk
audio.stream_pcm(pcm_chunks(), sample_rate=16000, channels=1)
Volume and mute
audio.set_config(volume=0.8, mute=False)
Context manager
with AudioClient() as audio:
audio.get_status()