要在C#中使用SpeechSynthesizer类支持多语言,您需要执行以下步骤:
-
首先,确保已安装SAPI5(Speech Application Programming Interface 5)的计算机上安装了所需的语言包。对于.NET Framework应用程序,您需要引用特定的程序集。这些程序集通常位于以下路径之一:
- C:\Windows\System32\Speech\SDK Binaries\MS\10\Windows\x64\
- C:\Program Files (x86)\Common Files\Microsoft Shared\Speech\SDK Binaries\MS\10\Windows\x86\
对于.NET Core或.NET 5/6/7应用程序,您需要从Microsoft的Speech SDK GitHub存储库下载并安装适用于所选平台的 Speech SDK。
-
在您的C#项目中,引用
System.Speech
命名空间。对于.NET Framework项目,请添加对System.Speech
的引用。对于.NET Core或.NET 5/6/7项目,在.csproj
文件中添加以下代码: -
创建一个
SpeechSynthesizer
对象,并使用SetVoiceByLanguage
方法设置要使用的语音。例如,要使用英语(美国)语音,请执行以下操作:using System; using System.Speech.Synthesis; class Program { static void Main() { SpeechSynthesizer synthesizer = new SpeechSynthesizer(); synthesizer.SetVoiceByLanguage("en-US"); synthesizer.Speak("Hello, this is a message in English."); } }
若要更改语音语言,只需将
SetVoiceByLanguage
方法的参数更改为所需的语言代码。例如,要使用法语(法国)语音,请使用"fr-FR"
作为参数。有关可用语言代码的完整列表,请参阅此处。 -
若要根据用户选择的语言动态更改语音,您可以获取用户的首选语言,然后使用相应的语言代码调用
SetVoiceByLanguage
方法。例如:using System; using System.Globalization; using System.Speech.Synthesis; class Program { static void Main() { SpeechSynthesizer synthesizer = new SpeechSynthesizer(); Console.WriteLine("Enter your preferred language code (e.g., 'en-US' for English):"); string languageCode = Console.ReadLine(); synthesizer.SetVoiceByLanguage(languageCode); synthesizer.Speak("Hello, this is a message in the selected language."); } }
通过遵循这些步骤,您的C#应用程序现在应该能够使用多种语言进行语音合成。