You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Amazon Transcribe做语音转文字如何同时捕获麦克风和扬声器音频

需求实现说明

使用sounddevice库完全可以实现同时捕获麦克风、扬声器两端音频的需求,无需额外引入其他工具。

调整方案

你当前的示例代码仅实现了单路麦克风采集,要同时采集扬声器音频,按以下步骤调整即可:

  • 首先调用sounddevice.query_devices()枚举本地所有音频设备,分别记录两个目标设备的ID:
    • 麦克风对应的输入设备ID
    • 扬声器对应的环回输入设备ID(不同系统的环回设备存在差异:Windows需先启用「立体声混音」设备后可见;Linux可配置PulseAudio环回模块生成对应设备;macOS需安装虚拟音频设备后显示对应环回设备)
  • 初始化两路独立的RawStream,分别绑定上述两个设备ID,所有流的采样率、声道数、数据格式统一配置为Amazon Transcribe要求的16000采样率、单声道、int16格式
  • 为两路流分别配置回调函数,将采集到的音频数据推到独立的asyncio队列,后续可根据需求选择将两路音频混合后送Amazon Transcribe转写,或分别提交转写任务生成两端的独立转写结果

双路采集示例代码

import asyncio
import sounddevice

async def dual_audio_stream():
    loop = asyncio.get_event_loop()
    # 分别创建麦克风、扬声器音频队列
    mic_queue = asyncio.Queue()
    speaker_queue = asyncio.Queue()

    # 麦克风回调
    def mic_callback(indata, outdata, frame_count, time_info, status):
        loop.call_soon_threadsafe(mic_queue.put_nowait, (bytes(indata), status))
    
    # 扬声器环回回调
    def speaker_callback(indata, outdata, frame_count, time_info, status):
        loop.call_soon_threadsafe(speaker_queue.put_nowait, (bytes(indata), status))

    # 麦克风流,替换<MIC_DEVICE_ID>为你查询到的麦克风设备ID
    mic_stream = sounddevice.RawStream(
        device=<MIC_DEVICE_ID>,
        channels=1,
        samplerate=16000,
        callback=mic_callback,
        blocksize=1024 * 2,
        dtype="int16",
    )
    # 扬声器环回流,替换<SPEAKER_LOOPBACK_DEVICE_ID>为你查询到的环回设备ID
    speaker_stream = sounddevice.RawStream(
        device=<SPEAKER_LOOPBACK_DEVICE_ID>,
        channels=1,
        samplerate=16000,
        callback=speaker_callback,
        blocksize=1024 * 2,
        dtype="int16",
    )

    with mic_stream, speaker_stream:
        while True:
            # 可根据业务逻辑调整获取逻辑,比如同时获取两路数据混合后返回
            mic_data, mic_status = await mic_queue.get()
            speaker_data, speaker_status = await speaker_queue.get()
            # 此处可添加音频混合逻辑,注意避免int16溢出
            yield mic_data, speaker_data

注意事项

如果需要将两路音频混合后转写,叠加音频数据时需要做归一化处理,避免超出int16的取值范围导致音频失真。

内容的提问来源于stack exchange,提问作者Marinos Ioannou

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 11:21:03