语音与音频概述

相关源码文件

以下文件被用作生成此 wiki 页面的上下文:

本节提供 RoboFrame_stable 中“语音与音频”子系统的高层概览,覆盖自动语音识别(ASR)、文本转语音(TTS)以及语音方向与增强的关键功能。这些组件共同使机器人能够感知语音命令、判定声源方向以促进交互,并生成合成语音进行交流。

由于本页是父级概览,详细的技术解释与实现细节委托给链接的子页面:


8.1 自动语音识别(ASR)与语音活动检测(VAD)

ASR 子系统负责将采集的音频信号转换为文本表示。它集成语音活动检测(VAD)模块以稳健地识别语音段并过滤非语音音频。关键亮点包括:

  • VoiceASRNode:编排音频采集、缓冲、VAD 与 ASR 推理的 ROS 2 节点,将识别出的文本以 ROS 话题或服务响应的形式发出。它支持实时流式识别与离线文件转写,并带状态管理与错误处理。

  • VADModule:实现两阶段检测方法,将 Silero VAD(基于神经模型的语音概率估计)与基于能量的自适应阈值相结合,精确定位语音起点与终点,减少误报并捕获自然语音边界。

  • ASRInferenceModule:管理 sherpa-onnx 识别器的生命周期,支持流式与离线模型类型、热词增强,并按部署 bundle 的 manifest 自动检测模型类型。它抽象了模型加载、音频流处理、解码与结果获取。

ASR 流水线强制严格的采样率(16 kHz)与帧大小(512 采样)以保持一致性。灵敏度、预滚缓冲时长与部署后端等可定制参数允许跨硬件配置适配。音频通过 AudioCaptureModule 从共享 ROS 音频话题缓冲 PCM 帧获取。

关于详细架构、节点 API 与配置,见 ASR 与 VAD。

ASR 与 VAD 的代码实体映射

        flowchart TB
    subgraph ASR_Subsystem["ASR & VAD"]
        VoiceASRNode[("VoiceASRNode\n(src/voice_asr_service/voice_asr_node.py)")]
        VADModule[("VADModule\n(src/voice_asr_service/voice_asr_service/vad_module.py)")]
        ASRInferenceModule[("ASRInferenceModule\n(src/voice_asr_service/voice_asr_service/asr_inference_module.py)")]
        AudioCaptureModule[("AudioCaptureModule\n(src/voice_asr_service/voice_asr_service/audio_capture_module.py)")]
        ManifestVadRuntime[("ManifestVadRuntime\n(vad runtime interface)")]
    end

    AudioCaptureModule --> VoiceASRNode
    VoiceASRNode --> VADModule
    VoiceASRNode --> ASRInferenceModule
    VADModule --> ManifestVadRuntime
    

来源:src/voice_asr_service/voice_asr_service/voice_asr_node.py:1-175, src/voice_asr_service/voice_asr_service/vad_module.py:1-208, src/voice_asr_service/voice_asr_service/asr_inference_module.py:1-193, src/voice_asr_service/voice_asr_service/audio_capture_module.py:1-186, src/voice_asr_service/README.md:1-138


8.2 语音方向(DOA)与增强

语音方向子系统估计输入语音信号的到达方向(DOA)并执行音频增强,以提升识别稳健性与抗噪能力。

  • speech_direction_node:处理多通道麦克风阵列数据进行 DOA 估计与音频增强的独立 ROS 2 节点。它不执行 ASR 或底盘控制。该节点可通过 YAML 配置高度定制麦克风阵列布局、模型后端选择(如 Ascend 310P NPU 对比 CUDA CPU/GPU)以及角度分辨率与最大结果年龄等运行参数。

  • FullSubNet 增强模型:增强模型(FullSubNet)增强多通道音频流以抑制噪声。它支持多种部署,如 Ascend NPU 优化的 OM 文件或 Torch CPU/GPU 运行时。

  • 模型管理:模型以带显式部署名的 schema-v3 bundle 组织。系统支持从 HuggingFace 仓库与 NAS 存储下载并校验模型资产。可启用诊断模式以存储中间音频与测量数据,用于离线分析与性能评估。

该子系统与由 ASR 包管理的共享 ROS 音频流水线交互,可独立启动或集成到 sound_follow 等更高层行为中。

关于详细用法、配置、部署与诊断,见 语音方向(DOA)与增强。

语音方向的代码实体映射

        flowchart TB
    subgraph SpeechDirectionSubsystem["Speech Direction & Enhancement"]
        SpeechDirectionNode[("speech_direction_node\n(src/voice_asr_service/voice_asr_service/voice_asr_node.py, README.md)")]
        FullSubNetBundle[("FullSubNet Model Bundle\n(models/fullsubnet)")]
        SileroVADBundle[("Silero VAD Bundle\n(models/silero-vad)")]
        SpeechDirectionConfig[("speech_direction.yaml & profiles\n(src/voice_asr_service/config)")]
        ModelDownloader[("scripts/download_models.py & verify_speech_direction_assets.py")]
    end

    SpeechDirectionNode --> SpeechDirectionConfig
    SpeechDirectionNode --> FullSubNetBundle
    SpeechDirectionNode --> SileroVADBundle
    ModelDownloader --> FullSubNetBundle
    ModelDownloader --> SileroVADBundle
    

来源:src/voice_asr_service/README.md:1-138


8.3 文本转语音(TTS)

TTS 子系统从文本输入生成语音音频,使机器人能够以口头方式交流。

  • ZipVoice 适配器:系统支持导出为 ONNX 或 Ascend 310P 优化运行时的 ZipVoice TTS 模型,在多样化平台上高效推理。

  • 音频播放节点:负责通过机器人扬声器播放合成音频的 ROS 节点,与 TTS 运行时服务集成。

  • Launch 与集成:launch 文件与插件管理 TTS 服务、模型加载与音频播放的生命周期与互连,促成流畅的语音合成流水线。

关于包括支持的模型类型、播放集成与 launch 编排在内的全面说明,见 文本转语音。


架构小结

“语音与音频”子系统松耦合,但共享公共的音频输入流水线与模型资源管理。语音方向预处理提升信号质量与空间感知,将增强后的音频馈送给将其转换为文本的 ASR 子系统。TTS 子系统接收来自其他模块的文本命令或响应,并合成语音音频输出。

        flowchart LR
    AudioCaptureModule["Audio Capture\n(src/voice_asr_service/voice_asr_service/audio_capture_module.py)"] --> SpeechDirectionNode["Speech Direction Node\n(voice_asr_service/speech_direction_node)"]
    SpeechDirectionNode --> EnhancedAudio["Enhanced Multichannel Audio"]
    EnhancedAudio --> VoiceASRNode["Voice ASR Node\n(voice_asr_service/voice_asr_node.py)"]
    VoiceASRNode --> RecognizedText["Recognized Text Output"]
    RecognizedText --> RobotSkills["Robot Skills/Agent Layer"]

    RobotSkills --> TTSSynthesis["TTS Synthesis\n(ZipVoice ONNX/310P)"]
    TTSSynthesis --> AudioPlayback["Audio Playback Node"]
    AudioPlayback --> Speakers["Speakers"]
    

来源:src/voice_asr_service/README.md:1-138, src/voice_asr_service/voice_asr_service/voice_asr_node.py:1-175, src/voice_asr_service/voice_asr_service/vad_module.py:1-208, src/voice_asr_service/voice_asr_service/asr_inference_module.py:1-193, src/voice_asr_service/voice_asr_service/audio_capture_module.py:1-186


本概览定义了使 RoboFrame_stable 机器人跨支持硬件平台无缝感知、理解并响应语音输入的生态系统。

欲深入了解技术与运行细节,请参阅各子页面: