[语音合成技术第二讲]C# 中使用语音合成技术(一)

本文介绍了如何使用C#实现简单的语音合成,通过引入speech的DLL并利用SpeechSynthesizer类,仅需几行代码即可完成文本到语音的转换。此外还分享了避免线程阻塞的小技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

C# 中使用语音合成技术(一)

前言:

语音合成技术其实并没有什么神秘的,也不像想象中的那么繁杂。今天我就与大家一起来看一下,怎么让计算机为我们朗读文字。您需要系统环境,我在第一讲的时候将配置需要的信息写在里面。您可以去这里查阅:http://blog.youkuaiyun.com/artlife/archive/2006/12/19/1449162.aspx

让我们开始:

首先我们需要引用speech DLL 具体步骤如下

在工程中添加引用:

<shapetype id="_x0000_t75" coordsize="21600,21600" o:spt="75" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f"><stroke joinstyle="miter"></stroke><formulas><f eqn="if lineDrawn pixelLineWidth 0"></f><f eqn="sum @0 1 0"></f><f eqn="sum 0 0 @1"></f><f eqn="prod @2 1 2"></f><f eqn="prod @3 21600 pixelWidth"></f><f eqn="prod @3 21600 pixelHeight"></f><f eqn="sum @0 0 1"></f><f eqn="prod @6 1 2"></f><f eqn="prod @7 21600 pixelWidth"></f><f eqn="sum @8 21600 0"></f><f eqn="prod @7 21600 pixelHeight"></f><f eqn="sum @10 21600 0"></f></formulas><path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"></path><lock v:ext="edit" aspectratio="t"></lock></shapetype><shape id="_x0000_i1025" style="WIDTH: 198.75pt; HEIGHT: 85.5pt" type="#_x0000_t75"><imagedata src="file:///C:%5CUsers%5Cscorpio%5CAppData%5CLocal%5CTemp%5Cmsohtml1%5C03%5Cclip_image001.png" o:title=""></imagedata></shape>

<shape id="_x0000_i1026" style="WIDTH: 369pt; HEIGHT: 282.75pt" type="#_x0000_t75"><imagedata src="file:///C:%5CUsers%5Cscorpio%5CAppData%5CLocal%5CTemp%5Cmsohtml1%5C03%5Cclip_image003.png" o:title=""></imagedata></shape>

<shape id="_x0000_i1027" style="WIDTH: 168pt; HEIGHT: 157.5pt" type="#_x0000_t75"><imagedata src="file:///C:%5CUsers%5Cscorpio%5CAppData%5CLocal%5CTemp%5Cmsohtml1%5C03%5Cclip_image005.png" o:title=""></imagedata></shape>

完成了引用的添加,请与我一起编写语音合成的 C#

必不可少的

using System.Speech.Synthesis;

下面的内容将告诉我们如何创建朗读的对象,和如何使用该朗读对象朗读文本.

SpeechSynthesizer synth = new SpeechSynthesizer();

synth.Speak("hello world");

就是这样的简单.

当然这是最简单的C# 中朗读文本的代码,只有短短的三行就可以了.在这里我说一点我的小经验. SpeechSynthesizer类的对象默认是不支持开启线程朗读的方法.例如remoting 或者 socket begin end 这样的。而在使用SpeechSynthesizer对象朗读的时候,会使程序等待它的朗读完毕。所以在处理朗读的时候,我在绝大多数的情况下,使将它放到一个线程当中。避免它的朗读,对主线程造成的阻塞。

好了 这一讲就先到这里。我在下一讲当中将更深入的与大家讨论,如何SpeechSynthesizer的朗读对象中的其它属性和方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值