zoukankan      html  css  js  c++  java
  • .NET 将文本转换成语音 (转)

     

      用过金山词霸的都知道金山词霸里有个功能能够将单词按其读音读出来。也许会有人认为它是事先将所有的单词的读音文件存储在数据库里,然后事需要的时候再调用。其实事实上并不是这样,我们有更好的解决办法,MS就专门提供了这种技术。

      在计算机中将文本转换成语音的技术叫做语音合成(TTS:Text To Speech)。要使用它的话就需要到MS官网上去下载地址为:http://www.microsoft.com/reader/developers/downloads/tts.mspx

      这个东西不是很大,到于原理还没有去想过,因为现在只是帮想了解的朋友做个最基本的DEMO。

      下下来了后就安装,注意:如果想实现汉字或非英语的阅读就要去下载SpeechSDK51LangPack。

      下面来创建一个TTS程序,首先在VS中创建一个项目,然后添加引用"安装目录"Samples"Csharp"ListBox"中的Interop.SpeechLib.dll程序集,在程序里引用SpeechLib Namespace。

      创建SpVoiceClass类,(SpVoiceClass是我们这里要用到的主要的类),面在这里必要的属性如下:

    属性名

    类型

    说明

    Voice

    SpObjectToken

    大概是用于设置声音的效果

    AudioOutput

    SpObjectToken

    用于选择声卡

    Rate

    Int

    频率,说话的速度

    Volume

    Int

    音量,最大为100

      根据SpVoiceClass类中几个必要的属性,我们可以做一个类似下图的简单界面

      具体的实现代码如下:

    Code
    private void button1_Click(object sender, EventArgs e)
    {
    try
    {
    voic.Voice
    = voic.GetVoices(null, null).Item(comboBox1.SelectedIndex);
    voic.AudioOutput
    = voic.GetAudioOutputs(null, null).Item(comboBox2.SelectedIndex);
    voic.Rate
    = trackBar1.Value;
    voic.Volume
    = trackBar2.Value;
    voic.Speak(textBox1.Text, SpeechVoiceSpeakFlags.SVSFDefault);
    }
    catch
    {
    ;
    }
    }

      注意:comboBox1.SelectedIndex不为3时只能读英语;如果为3,要读是是英文的话,它就会一个字母一个字母的读出来,如果是汉字则会读汉语(前提是装了话音补丁)

      好了,简单的Demo已经完成了,接着去探索吧……

    注:引用

     

    http://www.cnblogs.com/desmend/archive/2008/09/26/1299779.html

  • 相关阅读:
    正则表达式替换所有符合条件的字符
    关于jquery ajax不执行success回调函数
    关于jquery绑定事件执行两次
    同步选中所有checkbox
    Jquery动态改变my97datepicker的日期形式
    关于button在td中时,zclip复制不能的问题
    关于各种高度的获取方法
    慎用--skip-grant-tables命令
    Mysql中判断是否存在
    前端html
  • 原文地址:https://www.cnblogs.com/lbg280/p/1299896.html
Copyright © 2011-2022 走看看