前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >win10 uwp 字符文本转语音声音文件方法

win10 uwp 字符文本转语音声音文件方法

作者头像
林德熙
发布2020-11-03 15:45:48
发布2020-11-03 15:45:48
58800
代码可运行
举报
文章被收录于专栏:林德熙的博客林德熙的博客
运行总次数:0
代码可运行

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

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

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

代码语言:javascript
代码运行次数:0
复制
using (SpeechSynthesizer synthesizer = new SpeechSynthesizer())
{
    SpeechSynthesisStream stream = await synthesizer.SynthesizeTextToStreamAsync(word);
}

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

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

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

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

代码语言:javascript
代码运行次数:0
复制
        <MediaElement x:Name="MediaElement"></MediaElement>

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

代码语言:javascript
代码运行次数:0
复制
     MediaElement.SetSource(stream, stream.ContentType);
     MediaElement.Play();

默认的 stream.ContentType 就是 wav 格式

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

代码语言:javascript
代码运行次数:0
复制
using (var wordFileStream = await wordFile.OpenStreamForWriteAsync())
{
    await stream.AsStreamForRead().CopyToAsync(wordFileStream);
}

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

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档