音频控制 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: GrpcClient

Audio 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).

Parameters:
  • pcm_iter (Iterator[bytes]) – Iterator yielding raw PCM byte chunks.

  • sample_rate (int) – Sample rate (default 48000).

  • channels (int) – Channel count (default 1 = mono).

  • fmt (str) – Sample format (default “S16LE”).

stream_pcm_file(path, chunk_size=4096, sample_rate=48000, channels=1, fmt='S16LE')[source]

Stream a raw PCM file to device for playback.

Parameters:
  • path (str) – Path to raw PCM file.

  • chunk_size (int) – Bytes per chunk (default 4096).

  • sample_rate (int) – Sample rate.

  • channels (int) – Channel count.

  • fmt (str) – Sample format.

AudioClient

class neoruntime_ipc_sdk.AudioClient(endpoint=None)[source]

Bases: GrpcClient

Audio 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).

Parameters:
  • pcm_iter (Iterator[bytes]) – Iterator yielding raw PCM byte chunks.

  • sample_rate (int) – Sample rate (default 48000).

  • channels (int) – Channel count (default 1 = mono).

  • fmt (str) – Sample format (default “S16LE”).

stream_pcm_file(path, chunk_size=4096, sample_rate=48000, channels=1, fmt='S16LE')[source]

Stream a raw PCM file to device for playback.

Parameters:
  • path (str) – Path to raw PCM file.

  • chunk_size (int) – Bytes per chunk (default 4096).

  • sample_rate (int) – Sample rate.

  • channels (int) – Channel count.

  • fmt (str) – Sample format.

数据类型

AudioDevice

class neoruntime_ipc_sdk.AudioDevice(name: 'str', description: 'str')[source]
name: str
description: str
__init__(name, description)

AudioStatus

class neoruntime_ipc_sdk.AudioStatus(capturing: 'bool', playing: 'bool', device: 'str', sample_rate: 'int', channels: 'int', codec: 'str', volume: 'float', mute: 'bool')[source]
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)

使用示例

查询设备与状态

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()