using System.Diagnostics; using System.Runtime.InteropServices; using System.Speech.AudioFormat; using System.Speech.Recognition; using System.Speech.Synthesis; namespace TextToSpeechService; public class SpeechHelper { public static void TTS(MemoryStream ms,string txt ,int? rate,int? vol) { // 只能在Windows平台运行 if (!RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) { return; } using var synthesizer = new SpeechSynthesizer(); synthesizer.Rate = rate ?? 0; synthesizer.Volume = vol ?? 90; synthesizer.SetOutputToWaveStream(ms); synthesizer.Speak(txt); } public static string SST(MemoryStream ms) { // 只能在Windows平台运行 if (!RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) { return ""; } var recognizer = new SpeechRecognitionEngine(new System.Globalization.CultureInfo("zh-CN")); recognizer.SetInputToWaveStream(ms); recognizer.InitialSilenceTimeout = TimeSpan.FromSeconds(500); RecognitionResult result = recognizer.Recognize(); return result.Text; } public static string SST(byte[] bytes) { // 只能在Windows平台运行 if (!RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) { return ""; } //foreach (var x in SpeechRecognitionEngine.InstalledRecognizers()) //{ // Debug.WriteLine(x.Culture.Name); //} using var recognizer = new SpeechRecognitionEngine(new System.Globalization.CultureInfo("zh-CN")); recognizer.LoadGrammar(new DictationGrammar()); //string inFile = AppDomain.CurrentDomain.BaseDirectory + "/test/demo.wav"; //recognizer.SetInputToWaveFile(inFile); recognizer.SetInputToWaveStream(new MemoryStream(bytes)); recognizer.InitialSilenceTimeout = TimeSpan.FromSeconds(0); RecognitionResult result = recognizer.Recognize(); return result?.Text ?? ""; } }