【开发实例】C#调用SAPI实现语音合成的两种方法
标签:style blog http java color 使用
我们都知道现在的语音合成TTS是可以通过微软的SAPI实现的,好处我就不多说了,方便而已,因为在微软的操作系统里面就自带了这个玩意,主要的方式有两种:
1、使用COM组件技术,不管是C++,C#,Delphi都能玩的转,开发出来的东西在XP和WIN7都能跑。(要引入SpeechLib,好像在项目上点引用,然后选到系统COM吧,好久没弄,记不清楚了) 2、使用WIN7的windows api,其实最终还是调用了SAPI,所以开发出来的东西就只能在WIN7上面跑。 其实不管是哪一种,都是调用SAPI,可能后一种代码比较简单,使用已经安装的TTS引擎,现在一般用NeoSpeech,这个就不解释了,太强大了这个发音。。。 COM组件技术:
在 private SpeechLib.SpVoiceClass voice =null;这里,我们定义个一个用来发音的类,并且在第一次调用该类时,对它用BuildSpeach方法进行了初始化。
我们还定义了两个属性Volume和Rate,能够设置音量和语速。
我们知道,SpVoiceClass 有一个Speak方法,我们发音主要就是给他传递一个字符串,它负责读出该字符串,如下所示。
C#代码
- private void Speak(string strSpeack)
- {
- try
- {
- voice.Speak(strSpeack,SpeechVoiceSpeakFlags.SVSFlagsAsync) ;
- }
- catch(Exception err)
- {
- throw(new Exception("发生一个错误:"+err.Message)) ;
- }
- }
第二种使用.NET类库和系统API的代码如下:
C#代码
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Speech.Synthesis;
- using System.Speech;
-
- namespace StudyBeta
- {
- public class SRead
- {
- public SpeechSynthesizer synth; //语音合成对象
- public SRead()
- {
- synth = new SpeechSynthesizer();
- }
- public SRead(int m, int n)
- {
- //使用 synth 设置朗读音量 [范围 0 ~ 100]
- synth.Volume = m;
- //使用 synth 设置朗读频率 [范围 -10 ~ 10]
- synth.Rate = n;
- }
- public void SpeakChina(string ggg)
- {
- //SpVoice Voice = new SpVoice();
- synth.SelectVoice("Microsoft Lili");
- //Voice.Speak(ggg, SpFlags);
- synth.SpeakAsync(ggg);
- //String speechPeople = synth.Voice;
- //使用 synth 设置朗读音量 [范围 0 ~ 100]
- // synth.Volume = 80;
- //使用 synth 设置朗读频率 [范围 -10 ~ 10]
- // synth.Rate = 0;
- //使用synth 合成 wav 音频文件:
- //synth.SetOutputToWaveFile(string path);
- }
- public void SpeakEnglish(string ggg)
- {
- //SpVoice Voice = new SpVoice();
- synth.SelectVoice("VW Julie");
- synth.Speak(ggg); //ggg为要合成的内容
- }
- public int m
- {
- get
- {
- return synth.Volume;
- }
- set
- {
- synth.Volume = value;
- }
- }
- public int n
- {
- get
- {
- return synth.Rate;
- }
- set
- {
- synth.Rate = value;
- }
- }
- }
【开发实例】C#调用SAPI实现语音合成的两种方法,搜素材,soscw.com
【开发实例】C#调用SAPI实现语音合成的两种方法
标签:style blog http java color 使用
原文地址:http://www.cnblogs.com/gc2013/p/3816915.html
评论