• 用插件弄个语音阅读文本的小程序(托管C++)


    突然想了解语音方面的东西,就在网上看了下,开始没有找到,后来看见了几个都是MFC和C#的。不过不是我想要的。我想要的效果还在搜索中。无聊就弄了个和别人差不多的翻版。用托管C++做的。加入插件。建立项目。在窗体上添加一个textbox,一个组合框,几个标签和2个控制音量的控件。代码如下:

    SpVoice ^voic;
      bool pasue;
     private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
         SpVoice ^voic=gcnew SpVoice();
     
        
                    voic->Voice = voic->GetVoices(String::Empty,String::Empty)->Item(comboBox1->SelectedIndex);              
                  
         voic->Rate =rate;              
         voic->Volume =vol;              
         voic->Speak(textBox1->Text, SpeechVoiceSpeakFlags::SVSFDefault);

        }
    private: System::Void Form1_Load(System::Object^  sender, System::EventArgs^  e) {
       
                 SpVoice ^voic=gcnew SpVoice();
     
         for each (ISpeechObjectToken ^Token in voic->GetVoices(String::Empty, String::Empty))
                {     
           
        this->comboBox1->Items->Add(Token->GetDescription(49));
                }
         this->comboBox1->SelectedIndex=0;
       
        pasue=false;
       }
    private: System::Void trackBar2_Scroll(System::Object^  sender, System::EventArgs^  e) {
                   rate=   this->trackBar2->Value ;
       }
    private: System::Void trackBar1_Scroll(System::Object^  sender, System::EventArgs^  e) {
          vol=this->trackBar1->Value;
       }
    private: System::Void comboBox1_SelectedIndexChanged(System::Object^  sender, System::EventArgs^  e) {
                 
       }
    private: System::Void button2_Click(System::Object^  sender, System::EventArgs^  e) {
                  
        this->voic=gcnew SpVoice();
       if(pasue)
        {
       this->voic->Resume();
           pasue=false;
        this->button2->Text="暂停";
      }
       else
       {
       this->voic->Pause();
         pasue=true;
         this->button2->Text ="继续";
        }
      }
       private: System::Void button3_Click(System::Object^  sender, System::EventArgs^  e) {
           this->Close();
          }

     不过这个暂停有点问题样。在托管中不允许直接创建实例,但是要用于整个窗体的实例变量又必须在托管类中直接建立。我现在还没有找到好的解决办法。如果有人知道请留言告诉我哈。

  • 相关阅读:
    XSS跨站脚本攻击
    TCPDUMP
    使用adb命令抓取崩溃日志
    Android ADB 5037端口被占用问题解决办法:改端口号
    Fedora 29安装 和配置
    给linux 增加软件图标
    新手上路教程5_安全管理
    shell基础笔记
    新手上路教程4_DQL语言
    MySQL 和SQLserver 创建表注释字段的差别
  • 原文地址:https://www.cnblogs.com/jinyuttt/p/1736609.html
Copyright © 2020-2023  润新知