语音合成

在System.Speech程序集中,微软增加了一些非常酷的东西:语音合成,将文本转换为语音的能力,以及语音识别,将语音识别成文本的能力。 我们将专注于本文中的语音合成,然后在下一章进行语音识别。

要将文本转换为语音,我们将使用SpeechSynthesizer类。 这个类在System.Speech程序集中,我们需要添加它以在我们的应用程序中使用它。 根据您使用的Visual Studio版本,该过程如下所示:

添加适当的程序集后,我们现在可以使用System.Speech.Synthesis命名空间中的SpeechSynthesizer类。 有了这个,我们将开始另一个非常简单的“Hello,world!” 的例子,这次用语音:

<Window x:Class="WpfTutorialSamples.Audio_and_Video.SpeechSynthesisSample"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"Title="SpeechSynthesisSample" Height="150" Width="150"><Grid><Button Name="btnSayIt" Click="btnSayHello_Click" VerticalAlignment="Center" HorizontalAlignment="Center">Say hello!</Button></Grid>
</Window>
using System;
using System.Speech.Synthesis;
using System.Windows;
namespace WpfTutorialSamples.Audio_and_Video
{public partial class SpeechSynthesisSample : Window{public SpeechSynthesisSample(){InitializeComponent();}private void btnSayHello_Click(object sender, RoutedEventArgs e){SpeechSynthesizer speechSynthesizer = new SpeechSynthesizer();speechSynthesizer.Speak("Hello, world!");}}
}

控制发音

尽管如此,SpeechSynthesizer可以做更多的事情。 通过使用PromptBuilder类,我们可以更好地控制句子的使用方式。 下一个示例是第一个示例的扩展,将说明:

using System;
using System.Speech.Synthesis;
using System.Windows;
namespace WpfTutorialSamples.Audio_and_Video
{public partial class SpeechSynthesisPromptBuilderSample : Window{public SpeechSynthesisPromptBuilderSample(){InitializeComponent();}private void btnSayHello_Click(object sender, RoutedEventArgs e){PromptBuilder promptBuilder = new PromptBuilder();promptBuilder.AppendText("Hello world");PromptStyle promptStyle = new PromptStyle();promptStyle.Volume = PromptVolume.Soft;promptStyle.Rate = PromptRate.Slow;promptBuilder.StartStyle(promptStyle);promptBuilder.AppendText("and hello to the universe too.");promptBuilder.EndStyle();promptBuilder.AppendText("On this day, ");promptBuilder.AppendTextWithHint(DateTime.Now.ToShortDateString(), SayAs.Date);promptBuilder.AppendText(", we're gathered here to learn");promptBuilder.AppendText("all", PromptEmphasis.Strong);promptBuilder.AppendText("about");promptBuilder.AppendTextWithHint("WPF", SayAs.SpellOut);SpeechSynthesizer speechSynthesizer = new SpeechSynthesizer();speechSynthesizer.Speak(promptBuilder);}}
}

这是它变得有趣的地方。 尝试运行该示例,看看它有多好用。 通过为SpeechSynthesizer提供不仅仅是文本字符串的东西,我们可以很好地控制句子的各个部分的说法。 在这种情况下,应用程序将说以下内容:

Hello world and hello to the universe too. On this day, <今天的日期>, we’re gathered here to learn all about WPF.

现在尝试将它直接发送到SpeechSynthesizer,你可能会咯咯笑一下结果。 我们所做的是指导Speak()方法如何使用句子的各个部分。 首先我们要求WPF说出“and hello to the universe too” - 以较低的音量和较慢的速度发声,就好像是低声说的那样。

不使用默认发音的下一部分是日期。 我们使用特殊的SayAs枚举来指定日期应该作为实际日期读出,而不是一组数字空格和特殊字符。

我们还要求更强调“all”这个词,使句子更具活力,最后,我们要求拼写出“WPF”这个词,而不是将其作为实际词语发音。

总而言之,这使我们能够更容易理解SpeechSynthesizer!

WPF 说话-语音合成相关推荐

  1. 自然语言处理NLP之自然语言生成、文本相似性、看图说话、说话生图、语音合成、自然语言可视化

    自然语言处理NLP之自然语言生成.文本相似性.看图说话.说话生图.语音合成.自然语言可视化 目录

  2. ISCSLP 2022 | AccentSpeech—从众包数据中学习口音来构建目标说话人的口音语音合成系统

    构建带口音的语音合成系统可以增加语音合成的多样性和趣味性.然而不是每个人都能说多种口音.为了实现口音与说话人音色的自由组合,借助迁移学习技术,为没有口音数据的说话人构建口音合成系统,是实现" ...

  3. Python 能说话吗?调用Windows系统自带语音合成

    Python 语言能说话吗? 本文介绍Python如何调用系统自带的语音合成, 及生成语音wav文件的技巧. 目录 安装pythonnet库 调用系统语音合成 自定义语音音色 将语音合成到wav文件 ...

  4. ROS-语音控制-会说话的机器人(3)-科大讯飞离线语音合成+图灵机器人

    ROS-语音控制-会说话的机器人(3)-科大讯飞离线语音合成+图灵机器人 参考网址: https://blog.csdn.net/CHENKAIFAN__/article/details/806193 ...

  5. 让计算机开口说话教案,生活创客系列教学设计:第十三节 利用讯飞语音合成技术让掌控板开口说话 —掌控板与讯飞语音合成...

    一.项目内容 项目背景:在同学们的作品中,都用到了物联网.同学们又提出了问题:联网后,同伴发来了文字信息,但我们不可能长期看着掌控板的屏幕,咋办?能否让掌控板把文字朗读出来? 可以!今天,我们就一起尝 ...

  6. python 科大讯飞XFS5152CE语音合成芯片串口协议测试,机器人说话so easy

    忙中偷闲,搞个机器人语音交互模块备料,接好串口,插上耳机 打开文档 python代码 import struct import array from event import * class XFSC ...

  7. java sapi_使用Microsoft SAPI进行语音合成

    锐英源精品开源心得,转载请注明:"锐英源www.wisestudy.cn,孙老师作品,电话13803810136."需要全文内容也请联系孙老师. 使用Microsoft SAPI进 ...

  8. wpf 语音通话_WPF---语音合成与语音识别

    windows vista 和windows 7语音识别功能相关简介: 相信用过windows vista 和windows 7的人都知道或者了解过里面的语音识别功能.它可以使用声音命令来控制电脑,实 ...

  9. C#讯飞实时语音识别和语音合成

    目录 MSC模块导入及添加枚举常量等 语音识别模块 语音合成模块 最终结果 工程使用说明 代码下载 最近由于需要做一个关于语音的c#项目,经老师推荐使用了讯飞的语音识别和合成的接口,但由于网上资源关于 ...

最新文章

  1. hdu2067 简单dp或者记忆化搜索
  2. 各路资本暗战智能家居
  3. AJAX实现图片文件上传
  4. java arcgis server_ArcGIS Server Java 开发实战---自定义command
  5. 详解为何在嵌套ESXi环境下要求开启Promiscuous Mode
  6. echo 12345678 | base64 产生的结果跟12345678真正的base64编码不对
  7. 20155220 吴思其 2016-2017《java程序设计》第一周总结
  8. 怎么设置表头字体大小_Excel斜线表头和三线表头是如何制作的?
  9. htaccess是什么文件
  10. 统计文件大小与文件行数
  11. Mac合并pdf文件最简单的方法——PDF Expert合并pdf文件教程
  12. Thingworx入门学习
  13. 运动耳机品牌排名榜,2022年最值得入手的运动耳机推荐
  14. 熊乃学 计算机,吴谋博士研究成果在权威期刊在线发表
  15. freenom 加 cloudflare免费域名申请
  16. mysql 1556_mysqldump: Got error: 1556: You can't use locks with log tables.解决办法
  17. C++程序实现自我复制
  18. 3、中小企业网络架构-接入层交换机基本配置
  19. Windows 上用putty 和 SwitchySharp [转自同事]
  20. 聚焦移动应用性能管理,MobTech袤博全新产品“哨兵”火热上线

热门文章

  1. 年轻人才是短视频直播的营销未来
  2. opacity - cocos js
  3. 怎样判定应用程序自身运行在“兼容模式”下?
  4. 计算机更改用户名并更改用户目录,如何修改用户文件夹名?
  5. 初体验myeclipse+Axis2 开发web service (一)转
  6. DRM之Microsoft PlayReady学习入门(一)
  7. DSL element 'useProguard' is obsolete and will be removed soon. Use 'android.enableR8' in gradle.pro
  8. Macbook充电和电池保养的标准答案
  9. Imm Cleaning Solutions PCC54-W-1.2-Z喷嘴
  10. 61、智能指针类模板