关于语音朗读TTS的问题
#include "SpeechLib_OCX.h"
#include "SpeechLib_TLB.h"
TSpVoice *SpVoice1;
ISpeechObjectTokensPtr sots;
DWORD __stdcall TreadPlay(LPVOID lpParametr)
{
WideString con=Form1->Memo1->Text;
::CoInitialize(NULL);
SpVoice1->Speak(con, SVSFDefault);
::CoUninitialize();
return 0;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
SpVoice1=new TSpVoice(this);
sots=SpVoice1->GetVoices(WideString("Language=804"), (wchar_t*)"");
if(sots->get_Count() == 0)
{
MessageBox(Handle, "没有安装中文朗读语音库!", "警告", MB_OK +
MB_ICONWARNING);
Close();
}
//列出所有语音库
ComboBox1->Items->Clear();
for(int i=0;i<sots->get_Count();i++)
{
ComboBox1->Items->Add(sots->Item(i)->GetDescription(NULL));
}
ComboBox1->ItemIndex = 0;
SpVoice1->_set_Voice(sots->Item(0));//设置发音
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)//播放按钮
{
CreateThread(NULL,0,TreadPlay,this,0,NULL);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button3Click(TObject *Sender)//继续按钮
{
SpVoice1->Resume();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ComboBox1Change(TObject *Sender)//更换发音
{
SpVoice1->_set_Voice(sots->Item(Form1->ComboBox1->ItemIndex));
}
//---------------------------------------------------------------------------
void __fastcall TForm1::trckbr1Change(TObject *Sender)//音量
{
SpVoice1->set_Volume(trckbr1->Position);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::trckbr2Change(TObject *Sender)//语速
{
SpVoice1->set_Rate(trckbr2->Position);
}
void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)
{
SpVoice1->Pause();//关闭时先停止,因为不知道停止怎么实现,先用暂停代替
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormDestroy(TObject *Sender)
{
delete SpVoice1;
}
//---------------------------------------------------------------------------问题:
1、怎么判断机子是否安装了微软的tts引擎呢?
2、怎么判断当前说话结束没有?上面只是部分代码,因为我想说话结束前,“播放”按钮不可用,播放完才可用。
3、怎么实现停止功能?TSpVoice 只有pause()和resume()函数,好像没有停止。
4、怎么实现播放过程中改变发音、音量、语速?上面更改了,但是只有本次播放完,对下次播放才能生效。
...全文
相关推荐
TTS引擎语音朗读.rar
TTS引擎语音朗读.rar TTS引擎语音朗读.rar TTS引擎语音朗读.rar TTS引擎语音朗读.rar TTS引擎语音朗读.rar TTS引擎语音朗读.rar
文本语音朗读源码(TTS)
自己做的一个小测试程序(读memo里的内容),测试文本朗读功能,配上TTS语音库,效果还不错,大家共同学习吧!(注意看里边的说明文件)
详解在网页上通过JS实现文本的语音朗读
主要介绍了在网页上通过JS实现文本的语音朗读,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
TTS文字变语音朗读DEMO
能实现将文字转成语音的功能,经测试无问题 。
微软TTS5.1语音引擎(中文).msi
解决电脑不能读中文的问题和应用TTS开发语音程序,不能读中文的问题。安装后,会自动添加中文发音。你可以在如下路径查看:控制面板---》语音。精简,仅有1.5M。


ActiveX/COM/DCOM
