最近在开发中需要将文字播报出来,虽然目前像百度腾讯这类大厂都提供有API/SDK,但是都需要注册账号、申请API/SDK权限和最终上线正式使用。我参与的这项目是一个小项目,如果使用网上提供的开发API/SDK的话略嫌麻烦,并且需要联网(博主做的是C/S离线项目),经过翻阅微软文档发现了 .NET 内部已经提供了文字转语音的方法。下面我分享出来。
.NET 内部提供的文字转语音方法位于 System.Speech.Synthesis 命名空间下,使用起来也比较简单,只需传入要朗读的内容即可。下面是使用代码:
using System; using System.Speech.Synthesis; namespace Test { internal class Program { static void Main(string[] args) { string message = "你好,喵叔,我是语音信息!"; ReadAloud(message); Console.ReadLine(); } private static void ReadAloud(string message) { SpeechSynthesizer speechSynthesizer = new SpeechSynthesizer(); speechSynthesizer.Volume = 100; speechSynthesizer.Rate = 10; speechSynthesizer.SpeakAsync(message); } } }
在上面的代码中我们将定义的 message 传入 SpeechSynthesizer 类的 SpeakAsync 方法里来实现阅读文字。其中 Volume 属性是用来设置朗读音量的,它的取值范围是[0-100],Rate 属性用来设置朗读速度,取值范围在[-10,10],值越小朗读速度约慢。这段代码只能在 .NET Framework 框架下运行,如果要在 .NET Core 、.NET5 和 .NET6 框架下运行的话,因为没有内置的文字朗读方法,因此我们仍需要调用第三方提供的文字朗读API/SDK。