Windows下使用Azure Speech SDK如何用Python获取麦克风设备ID创建AudioConfig
解决方案
你可以通过pycaw库调用Windows原生音频API获取符合Azure Speech SDK要求的麦克风设备ID,无需依赖C++/C#组件。
前置依赖安装
执行以下命令安装所需的第三方库:
pip install pycaw comtypes
获取音频输入设备列表及对应ID的代码
import comtypes from pycaw.pycaw import AudioUtilities, IMMDeviceEnumerator, EDataFlow, DEVICE_STATE from comtypes import CoInitialize, CoUninitialize def get_all_capture_devices(): CoInitialize() device_list = [] try: # 初始化设备枚举器 enumerator = comtypes.CoCreateInstance( IMMDeviceEnumerator._iid_, interface=IMMDeviceEnumerator, clsctx=comtypes.CLSCTX_ALL ) # 枚举所有处于激活状态的音频输入设备 endpoint_collection = enumerator.EnumAudioEndpoints( EDataFlow.eCapture, DEVICE_STATE.ACTIVE ) device_count = endpoint_collection.GetCount() for i in range(device_count): dev = endpoint_collection.Item(i) dev_id = dev.GetId() dev_name = AudioUtilities.GetDeviceName(dev) device_list.append({ "device_name": dev_name, "azure_device_id": dev_id }) finally: CoUninitialize() return device_list # 调用示例:打印所有可用麦克风的名称和对应ID if __name__ == "__main__": all_mics = get_all_capture_devices() for mic in all_mics: print(f"麦克风名称:{mic['device_name']}") print(f"Azure SDK可用device_id:{mic['azure_device_id']}\n")
上述代码返回的azure_device_id无需额外格式化,可直接作为参数传入AudioConfig的device_name字段
调用Azure Speech SDK示例
拿到目标设备ID后,按以下方式初始化音频配置即可:
import azure.cognitiveservices.speech as speechsdk # 替换为你的语音服务配置 speech_config = speechsdk.SpeechConfig( subscription="YOUR_AZURE_SPEECH_KEY", region="YOUR_SERVICE_REGION" ) # 替换为上面获取到的目标麦克风的ID audio_config = speechsdk.audio.AudioConfig( device_name="YOUR_TARGET_MIC_DEVICE_ID" ) # 后续正常初始化语音翻译客户端即可
内容的提问来源于stack exchange,提问作者Karthik Sunil
相关产品推荐
相关产品推荐

