语音识别和语音合成

    技术2022-05-19  21

    准备

    .net中使用语音识别和语音合成技术,需要借助微软的Speech SDK,如果是要在Web应用程序中使用,则需要Speech Application SDK。其中Speech SDK可以在http://www.microsoft.com/speech/download/sdk51/下载,其中有两个文件Speech SDK 5.15.1 Language Pack,前者是开发包,但是其中只包含对英文的支持,后者是中文和日文的语言包,装完就能支持中文了。

    演练

    1.         打开vs2005,建立一个windows application,在设计窗体中加入一个label,一个richtextbox(用于输入要读的文本),以及一个button。并分别设置的labelbuttonText属性。

    2.         添加必要的引用,项目->添加引用->COM 选择Microsoft Speech Object Library点确定退出。

    3.         双击button,为其添加事件。在代码页顶端先添加命名空间,代码如:  

    using SpeechLib;

    4.         button的事件处理程序代码如下。

            private void button1_Click(object  sender, EventArgs e)         {            SpVoiceClass voice = new SpVoiceClass();             voice.Voice = voice.GetVoices(string.Empty, string.Empty).Item(3); //其中3为中文,024为英文            voice.Speak(richTextBox1.Text,SpeechVoiceSpeakFlags.SVSFDefault);        }

    5.         按F5运行,在空白区域输入文字,点朗读,试试效果吧。

    SpVoiceClass详解

     

    属性

    描述

    AlertBoundary

    取得或设置停顿分界线。

    AllowAudioOutputFormatChangesOnNextSet

    设置是否允许声音自动调整到合适状态以适应其音频输出。

    AudioOutput

    .取得或设置当前声音使用的的音频输出对象

    AudioOutputStream

    取得或设置当前声音使用的的音频输出流对象。

    EventInterests

    取得或设置当前声音返回的事件类型。

    Priority

    取得或设置声音的优先级。

    Rate

    取得或设置阅读的速度。

    Status

    返回一个ISpeechVoiceStatus 对象用于显示当前阅读和事件的状态

    SynchronousSpeakTimeout

    取得或设置一个时间间隔,用于标识多久未获得一个输出设备后,一个同步的Speak SpeakStream将终止,以毫秒计算。

    Voice

    取得或设置发音对象。

    Volume

    取得或设置声音的大小 。

     

     

     

    方法

    描述

    DisplayUI

    是否在控制面板中展示详细设置。

    GetAudioOutputs

    返回一个可用的音频输出标记。

    GetVoices

    返回一个可用的发音对象。

    IsUISupported

    决定是否能通过控制棉板的音频设置来控制。

    Pause

    暂停朗读。.

    Resume

    恢复暂停,继续播放。

    Skip

    在当前输入的文本流中向前或向后跳一定距离再播放。

    Speak

    阅读一个字符串。

    SpeakCompleteEvent

    得到一个朗读完毕的时间句柄

    SpeakStream

    朗读一个文本流或一个声音文件。

    WaitUntilDone

    阻塞进程,直到声音播放完毕或者超时。.

     

     

    转载请注明:来自ChnCMS本文地址:http://www.chncms.com/2010/12/2/DOTNETVOICECOMMAND.html


    最新回复(0)