关于语音包读汉字或英文问题
2008-08-02 22:07
113 查看
首先下个TTS开发包 微软的TTS SDK5.0
#include <windows.h>
#include <sapi.h>
#include <wininet.h>
#include <assert.h>
#include <cstdio>
#include <sphelper.h>
#pragma comment(lib,"wininet")
int main(int argc, char* argv[])
{
ISpVoice* pVoice ;
ISpObjectToken* pVoiceToken;
IEnumSpObjectTokens* pEnum;
ULONG ulCount=0;
if (FAILED(::CoInitialize(NULL)))
return FALSE;
HRESULT hr = CoCreateInstance(CLSID_SpVoice, NULL, CLSCTX_ALL, IID_ISpVoice, (void **)&pVoice);
if( SUCCEEDED( hr ) )
{
hr = SpEnumTokens(SPCAT_VOICES, NULL, NULL, &pEnum);
if(SUCCEEDED(hr))
hr = pEnum->GetCount(&ulCount);
// Obtain a list of available voice tokens, set the voice to the token, and call Speak
while (SUCCEEDED(hr) && ulCount -- )
{
if(SUCCEEDED(hr))
hr = pEnum->Next( 1, &pVoiceToken, NULL );
if(SUCCEEDED(hr))
hr = pVoice->SetVoice(pVoiceToken);
if(SUCCEEDED(hr))
hr = pVoice->Speak( L"How are you?", SPF_DEFAULT, NULL);
hr = pVoice->Speak(L"Hello world", 0, NULL);
// Change pitch
hr = pVoice->Speak(L"This sounds normal <pitch middle = '-10'/> but the pitch drops half way through", SPF_IS_XML, NULL );
hr = pVoice->Speak(L"1234567¹þ¹þ", 0, NULL);
pVoiceToken->Release();
pVoiceToken=NULL;
}
pVoice->Release();
pVoice = NULL;
}
::CoUninitialize();
return TRUE;
/*
LPCSTR url="https://202.106.134.65/";
HINTERNET hInet=InternetOpen("",INTERNET_OPEN_TYPE_PRECONFIG,NULL,NULL,NULL);
assert(hInet);
HINTERNET hHttps=InternetOpenUrl(hInet,url,NULL,NULL,NULL,NULL);
assert(hHttps);
ULONG nRead=0;
do{
char Buffer[1024];
Buffer[1000]=0;
InternetReadFile(hHttps,Buffer,1000,&nRead);
puts(Buffer);
}while(nRead>0);
InternetCloseHandle(hHttps);
InternetCloseHandle(hInet);
*/
}
关于:TTS VTxtAuto
1.成员函数的第一个参数向TTS引擎传送需要朗读的文字,第二个参数传递朗读时的语气和优先级别,由两个常量相加组成
控制优先级别的常量有:
vtxtsp_HIGH=256(&H100),尽快读出,加入播放队列开始
vtxtsp_NORMAL=512(&H200),默认,加入播放队列末尾
vtxtsp_VERYHIGH=128(&H80),立即读出,可以打断正在读的内容
控制语气的常量有:
vtxtst_COMMAND=4,命令的语气
vtxtst_NUMBERS=32(&H20),阅读数字的语气
vtxtst_QUESTION=2 提问的语气
vtxtst_READING 阅读文档时的语气
vtxtst_SPREADSHEET=64(&H40),阅读电子表格中元素的语气
vtxtst_STATEMENT=1 ,平时说话时的语气
vtxtst_WARNING=8,警告的语气
通过IsSpeaking可以取得当前状态
可以通过改变AudioForward和AudioRewind向前和向后跳过一句朗读
修改speed属性可以设置朗读的语速,默认值speed=170
语音朗读开发包
www.smartysoft.cn
#include <windows.h>
#include <sapi.h>
#include <wininet.h>
#include <assert.h>
#include <cstdio>
#include <sphelper.h>
#pragma comment(lib,"wininet")
int main(int argc, char* argv[])
{
ISpVoice* pVoice ;
ISpObjectToken* pVoiceToken;
IEnumSpObjectTokens* pEnum;
ULONG ulCount=0;
if (FAILED(::CoInitialize(NULL)))
return FALSE;
HRESULT hr = CoCreateInstance(CLSID_SpVoice, NULL, CLSCTX_ALL, IID_ISpVoice, (void **)&pVoice);
if( SUCCEEDED( hr ) )
{
hr = SpEnumTokens(SPCAT_VOICES, NULL, NULL, &pEnum);
if(SUCCEEDED(hr))
hr = pEnum->GetCount(&ulCount);
// Obtain a list of available voice tokens, set the voice to the token, and call Speak
while (SUCCEEDED(hr) && ulCount -- )
{
if(SUCCEEDED(hr))
hr = pEnum->Next( 1, &pVoiceToken, NULL );
if(SUCCEEDED(hr))
hr = pVoice->SetVoice(pVoiceToken);
if(SUCCEEDED(hr))
hr = pVoice->Speak( L"How are you?", SPF_DEFAULT, NULL);
hr = pVoice->Speak(L"Hello world", 0, NULL);
// Change pitch
hr = pVoice->Speak(L"This sounds normal <pitch middle = '-10'/> but the pitch drops half way through", SPF_IS_XML, NULL );
hr = pVoice->Speak(L"1234567¹þ¹þ", 0, NULL);
pVoiceToken->Release();
pVoiceToken=NULL;
}
pVoice->Release();
pVoice = NULL;
}
::CoUninitialize();
return TRUE;
/*
LPCSTR url="https://202.106.134.65/";
HINTERNET hInet=InternetOpen("",INTERNET_OPEN_TYPE_PRECONFIG,NULL,NULL,NULL);
assert(hInet);
HINTERNET hHttps=InternetOpenUrl(hInet,url,NULL,NULL,NULL,NULL);
assert(hHttps);
ULONG nRead=0;
do{
char Buffer[1024];
Buffer[1000]=0;
InternetReadFile(hHttps,Buffer,1000,&nRead);
puts(Buffer);
}while(nRead>0);
InternetCloseHandle(hHttps);
InternetCloseHandle(hInet);
*/
}
关于:TTS VTxtAuto
1.成员函数的第一个参数向TTS引擎传送需要朗读的文字,第二个参数传递朗读时的语气和优先级别,由两个常量相加组成
控制优先级别的常量有:
vtxtsp_HIGH=256(&H100),尽快读出,加入播放队列开始
vtxtsp_NORMAL=512(&H200),默认,加入播放队列末尾
vtxtsp_VERYHIGH=128(&H80),立即读出,可以打断正在读的内容
控制语气的常量有:
vtxtst_COMMAND=4,命令的语气
vtxtst_NUMBERS=32(&H20),阅读数字的语气
vtxtst_QUESTION=2 提问的语气
vtxtst_READING 阅读文档时的语气
vtxtst_SPREADSHEET=64(&H40),阅读电子表格中元素的语气
vtxtst_STATEMENT=1 ,平时说话时的语气
vtxtst_WARNING=8,警告的语气
通过IsSpeaking可以取得当前状态
可以通过改变AudioForward和AudioRewind向前和向后跳过一句朗读
修改speed属性可以设置朗读的语速,默认值speed=170
语音朗读开发包
www.smartysoft.cn
相关文章推荐
- 关于语音包读汉字或英文问题
- 关于Python matplotlib显示汉字乱码问题
- 关于两个汉字和三个汉字左右对齐的问题
- 关于ORACLE数据库中汉字显示乱码问题的探讨
- IOS 关于拍照界面,复制,粘贴等菜单的显示为英文的问题
- R语音-MySQL连接汉字乱码问题集解决
- 关于汉字和拼音对照片的制作问题
- 关于python 2.7要求输出汉字问题
- python中关于处理汉字乱码的问题
- sql server 关于表中只增标识问题 C# 实现自动化打开和关闭可执行文件(或 关闭停止与系统交互的可执行文件) ajaxfileupload插件上传图片功能,用MVC和aspx做后台各写了一个案例 将小写阿拉伯数字转换成大写的汉字, C# WinForm 中英文实现, 国际化实现的简单方法 ASP.NET Core 2 学习笔记(六)ASP.NET Core 2 学习笔记(三)
- 求助:关于Request传奇数个汉字参数的问题
- 关于ios 和 android 录音(语音)对聊文件格式问题
- java中关于一个汉字等于几个字节的问题
- 关于UITextField 支持中文、英文和数字的限制问题,以及中文九宫格无法输入的解决
- 网络上DesUtil.java关于汉字加密解密出现乱码的问题
- 关于前后台汉字乱码问题
- 关于qt无法显示汉字的问题
- 关于QTE4的汉字显示问题的终极解决办法!!!(亲测可用!)
- 关于python 2.7要求输出汉字问题
- 关于IOS中时间显示格式问题为中文问题(虽然语言设置为英文)