using System.Text; using TTS; using TTS.Struct; internal class Program { private static void Main(string[] args) { SherpaOnnxOfflineTtsConfig sherpaOnnxOfflineTtsConfig = new SherpaOnnxOfflineTtsConfig(); sherpaOnnxOfflineTtsConfig.model = new SherpaOnnxOfflineTtsModelConfig { debug = 0, num_threads = 4, provider = "cpu", vits = new SherpaOnnxOfflineTtsVitsModelConfig { lexicon = "vits-zh-aishell3/lexicon.txt", model = "vits-zh-aishell3/vits-aishell3.onnx", tokens = "vits-zh-aishell3/tokens.txt", noise_scale = 0.667f, noise_scale_w = 0.8f, length_scale = 1, }, }; TTSCore i = new TTSCore(sherpaOnnxOfflineTtsConfig); Console.InputEncoding = Encoding.Unicode; Console.OutputEncoding = Encoding.UTF8; while (true) { var str = Console.ReadLine(); var audioResult = i.ToSpeech(str, 40, 1f); // audioResult.WriteWAVFile("123.wav");保存本地 audioResult.Play(); int lastIndex = -1; while (audioResult.PlayProgress <= 1f) { int index = (int)(audioResult.PlayProgress * (str.Length - 1)); if (lastIndex != index) { Console.Write(str[index]); lastIndex = index; } Thread.Sleep(100); } if (++lastIndex < str.Length) Console.Write(str[lastIndex]); Console.WriteLine(); } } }