如何在.NET Framework4.7.2的C#中切换Speech Recognition Engine麦克风?
切换Speech Recognition Engine的音频输入设备
在.NET Framework 4.7.2中,你可以通过以下步骤指定非默认麦克风设备:
1. 枚举可用的音频输入设备
首先用SpeechRecognitionEngine.GetAudioInputs()静态方法获取所有可用的语音输入设备,每个设备对应AudioDeviceInfo对象,包含唯一的Id和友好Name:
using System.Speech.Recognition; // 获取所有可用音频输入设备 var audioDevices = SpeechRecognitionEngine.GetAudioInputs(); // 遍历输出设备信息,方便选择目标设备 foreach (var device in audioDevices) { Console.WriteLine($"设备名称: {device.Name}, 设备ID: {device.Id}"); }
2. 指定目标设备作为输入
通过SetInputToAudioDevice()方法,传入目标设备的Id或Name即可切换输入源(推荐用Id,避免名称重复导致的识别错误):
// 初始化识别引擎 SpeechRecognitionEngine engine = new SpeechRecognitionEngine(); // 示例1:通过设备ID指定 var targetDevice = audioDevices.FirstOrDefault(d => d.Id == "目标设备ID"); if (targetDevice != null) { engine.SetInputToAudioDevice(targetDevice.Id); } // 示例2:通过设备名称指定(如果名称唯一) // engine.SetInputToAudioDevice("你的麦克风设备名称");
注意事项
- 确保目标设备是有效的音频输入设备,否则调用
SetInputToAudioDevice会抛出异常 - 设备
Id是系统分配的唯一标识,比名称更可靠,适合程序中固定指定设备 - 如果需要动态选择设备,可以结合UI让用户从枚举的设备列表中挑选
内容的提问来源于stack exchange,提问作者sakai ntech
相关产品推荐
相关产品推荐

