在 UWP 中,支持将传入的字符串文本内容转换为音频语音,可以将这个语音声音通过 MediaElement 播放,或者将这个音频保存到文件里面

本文的方法是通过 SpeechSynthesizer 类提供的将 文本字符串 转换为 wav 的 Stream 对象实现的

核心的转换字符文本作为音频 Stream 代码如下

using (SpeechSynthesizer synthesizer = new SpeechSynthesizer())
{
    SpeechSynthesisStream stream = await synthesizer.SynthesizeTextToStreamAsync(word);
}

上面代码的 word 就是传入的字符串文本,可以是一个单词也可以是一个句子或一段话

在 UWP 中使用如上面代码就可以用到 UWP 自带的语音合成技术的将文本转换为语音的功能

在拿到 SpeechSynthesisStream 之后,可以进行播放或者保存到文件

进行播放时需要使用到 MediaElement 控件,在 XAML 中先添加 MediaElement 控件,代码如下

        <MediaElement x:Name="MediaElement"></MediaElement>

在后台代码通过 SetSource 方法可以设置如上的音频对象进行博客

     MediaElement.SetSource(stream, stream.ContentType);
     MediaElement.Play();

默认的 stream.ContentType 就是 wav 格式

而保存到音频数据到文件可以采用如下方法

using (var wordFileStream = await wordFile.OpenStreamForWriteAsync())
{
    await stream.AsStreamForRead().CopyToAsync(wordFileStream);
}

在上面代码中的 wordFile 是一个 StorageFile 对象,可以通过用户选择等方式获取

本文代码放在 github 欢迎小伙伴访问


本文会经常更新,请阅读原文: https://dotnet-campus.github.io//post/win10-uwp-%E5%AD%97%E7%AC%A6%E6%96%87%E6%9C%AC%E8%BD%AC%E8%AF%AD%E9%9F%B3%E5%A3%B0%E9%9F%B3%E6%96%87%E4%BB%B6%E6%96%B9%E6%B3%95.html ,以避免陈旧错误知识的误导,同时有更好的阅读体验。

知识共享许可协议 本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。欢迎转载、使用、重新发布,但务必保留文章署名 lindexi (包含链接: https://dotnet-campus.github.io/ ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请 与我联系