音频控制 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.
数据类型
AudioDevice
AudioStatus
使用示例
查询设备与状态
from neoruntime_ipc_sdk import AudioClient
audio = AudioClient()
# 列出采集/播放设备
for dev in audio.list_capture_devices():
print(f"采集: {dev.name} ({dev.description})")
for dev in audio.list_playback_devices():
print(f"播放: {dev.name} ({dev.description})")
# 当前运行状态
status = audio.get_status()
print(f"采集: {status.capturing}, 播放: {status.playing}, "
f"{status.sample_rate}Hz {status.channels}ch {status.codec}")
开始/停止采集
# 指定参数启动采集(0/空串表示沿用默认)
audio.start_capture(sample_rate=16000, channels=1, codec="aac")
# 配合 AudioStreamClient 订阅音频帧(见音频流 API)...
audio.stop_capture()
播放文件(对讲放音)
# 阻塞播放一个 PCM 文件
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()
流式播放 PCM(实时对讲)
# pcm_iter 逐块产出 PCM 字节,边收边播
def pcm_chunks():
for chunk in network_receive():
yield chunk
audio.stream_pcm(pcm_chunks(), sample_rate=16000, channels=1)
音量与静音
audio.set_config(volume=0.8, mute=False)
上下文管理器
with AudioClient() as audio:
audio.get_status()