Matthewl 发表于 2015-5-9 10:34:27

调用 Windows 7 中英文混合朗读

  1、windows7内置语音识别
  2、文本到语音转换增加了 Microsoft Lili - Chinese(China) ,支持中英文混合朗读
  3、女声、部分词组基本发音准确
  
  以上让我有做个小程序的冲动;如下:
  
  1、引入SpeechLib.dll
  2、创建form
  3、编写代码
  



    public partial class FormMain : Form
    {
      public FormMain()
      {
            InitializeComponent();
      }
      private void FormMain_Load(object sender, EventArgs e)
      {
            GetVoices();
      }
      private void GetVoices()
      {
            SpVoice voice = new SpVoiceClass();
            ISpeechObjectTokens voices = voice.GetVoices("", "");
            var list = new List();
            foreach (ISpeechObjectToken token in voices)
                list.Add(token.GetDescription(0));
            cbSpeechType.DataSource = list;
      }
      private void btnSpeechText_Click(object sender, EventArgs e)
      {
            SpeechText(null);
      }
      private void SpeechText(string fileName)
      {
            Cursor = Cursors.WaitCursor;
            SpFileStream stream = null;
            SpVoice voice = new SpVoiceClass();
            if (fileName + "" != "")
            {
                stream = new SpFileStreamClass();
                stream.Open(fileName, SpeechStreamFileMode.SSFMCreateForWrite, false);
                voice.AudioOutputStream = stream;
            }
            voice.Voice = voice.GetVoices("", "").Item(cbSpeechType.SelectedIndex);
            voice.Volume = tbVol.Value;
            voice.Rate = tbSpeechSpeed.Value;
            voice.Speak(tbText.Text, SpeechVoiceSpeakFlags.SVSFDefault);
            if (fileName + "" != "" && stream != null)
                stream.Close();
            Cursor = Cursors.Arrow;
      }
      private void btnRecordSpeech_Click(object sender, EventArgs e)
      {
            Cursor = Cursors.WaitCursor;
            using (var saveFileDialog = new SaveFileDialog())
            {
                saveFileDialog.FileName = "MyVoice.wav";
                saveFileDialog.Filter = "Wave (*.wav)|*.wav";
                if (saveFileDialog.ShowDialog() == DialogResult.OK)
                {
                  SpeechText(saveFileDialog.FileName);
                }
            }
            Cursor = Cursors.Arrow;
      }
    }  
  以上功能支持朗读文本框内文本,支持讲文本输出语音文件;
  
  参考应用场景:
  1、尝尝鲜,再删除
  2、将小说文本转化为音频放MP3内去听
  3、骗骗小孩
  
  运行环境需求:
  1、WINDOWS 7
  2、其他未知
  
  
  说再多不如放个代码,所以本文从简,请下载后编译运行。
  
  /Files/Chinasf/AnySpeech.rar
页: [1]
查看完整版本: 调用 Windows 7 中英文混合朗读