1. 程式人生 > >QT實現文字轉語音

QT實現文字轉語音

轉自
最近寫一個QT程式時需要用到文字轉語音播放,在網上找了很多關於QT呼叫微軟tts的資料,在這總結一下其中一個使用QAxObject實現的方法,下面原文地址,http://www.cnblogs.com/rockhawk/archive/2011/09/02/2164016.html 為了適合像我一樣的新手,為了能夠完整快速的實現程式,我把沒有涉及到的細節和新手會遇到的但文中沒有提到的問題整理了一下。 這個程式要下載MS Speech sdk ,如果需要中英文混度,網上有sdk5.1的包以及中文語言包 首先如果我們需要新建一個C++類來完成我們的程式時,儘量要在建立時設定基類為QObject,這樣使用connect函式時可以避免出現問題。 第二個要注意到的問題是因為我們要用到QAxObject,所以需要在工程的pro檔案中新增這樣一句話:
CONFIG
+=qaxcontainer
注意以上兩個問題之後在編寫程式碼時應該就不會出現什麼問題了,我在使用QT4.8時無法找到QAxObject,如果出現這個問題的大概跟我一樣是安裝QT時出了問題,我解除安裝後重新完整安裝了QT5.0之後這個問題得到了解決,下面開始介紹程式碼。我的類名為TextSpeech。因為我只需要部分函式,所以我在程式中沒有使用原文中提到的所有函式,剩下的函式stop(),pause(),reseum()三個主要函式的原理相同
#ifndefTEXTSPEECH_H
#defineTEXTSPEECH_H
#include<QObject>
#include
<QAxObject>
classTextSpeech:publicQObject
{
Q_OBJECT
public:
explicitTextSpeech(QObject*parent=0);
~TextSpeech();
boolinitSpeech();//初始化函式
boolspeak(QStringtxt);//文字轉語音函式
voidsetRate(intrate);//設定語速,範圍-10到10
voidsetVolume(intvalue);//設定音量,範圍 0到100
boolisSpeaking();
private:
QAxObject_voice;
bool_binit;
bool_bReading;
signals:
voidspeakComplete();
privateslots:
voiddealevent(QStringname,intarc,void*argv);
};
#endif// TEXTSPEECH_H
#include"textspeech.h"
TextSpeech::TextSpeech(QObject*parent):
QObject(parent),_binit(0),_bReading(0)
{
initSpeech();//初始化語音
}
TextSpeech::~TextSpeech()
{
}
boolTextSpeech::initSpeech()
{
if(_binit)
returntrue;
_binit=this->_voice.setControl("96749377-3391-11D2-9EE3-00C04F797396");//設定COM的名稱用來初始化COM的模型,返回是否載入成功
if(_binit)
{
connect(&this->_voice,SIGNAL(signal(QString,int,void*)),this,SLOT(dealevent(QString,int,void*)));
}
return_binit;
}
//文字轉語音朗讀函式
boolTextSpeech::speak(QStringtxt)
{
if(!_binit)
returnfalse;
intresult=this->_voice.dynamicCall("Speak(QString, SpeechVoiceSpeakFlags)",txt,1).toInt();//執行第一個引數的方法名,以第二個引數返回是否執行成功
_bReading=true;
returnresult;//返回是否執行閱讀函式
}
//判斷語音系統是否執行函式
boolTextSpeech::isSpeaking()
{
return_bReading;
}
//設定語音朗讀速度-10到10
voidTextSpeech::setRate(intrate)
{
if(!_binit)
return;
this->_voice.dynamicCall("SetRate(int)",rate);
}
//設定語音音量0到100
voidTextSpeech::setVolume(intvalue)
{
if(!_binit)
return;
this->_voice.dynamicCall("SetVolume(int)",value);
}
voidTextSpeech::dealevent(QStringname,intarc,void*argv)
{
if(name=="EndStream(int,QVariant)")
{
_bReading=false;
emitspeakComplete();
}
}

完成以上程式碼的編寫,你就可以在別的類中申請該類的物件,呼叫該類的speak函式傳入你需要朗讀的文字就可以實現中英文混讀了。程式碼中的關於函式或者程式碼段到的註釋也是我閱讀幫助文件後按自己理解註釋的,所以建議大家還是去閱讀原來的英文幫助文件,我也是新手,所以對於程式理解有誤的地方希望指出。下面我上傳我的測試工程下載地址,在main.cpp中呼叫的該類的speak函式,供大家測試使用:

相關推薦

QT實現文字語音

轉自 最近寫一個QT程式時需要用到文字轉語音播放,在網上找了很多關於QT呼叫微軟tts的資料,在這總結一下其中一個使用QAxObject實現的方法,下面原文地址,http://www.cnblogs.com/rockhawk/archive/2011/09/02/21640

使用Python實現文字語音並生成wav檔案

目前手邊的一些工作,需要實現聲音播放功能,而且僅支援wav聲音格式。 現在,一些網站上支援文字轉語音功能,但是生成的都是MP3檔案,這樣還需要額外的軟體來轉成wav檔案,十分麻煩。 後來,研究Python,發現Python可以很容易的實現上面的功能。 步驟如下, 1。使用百度語音實現

呼叫GOOGLE的TTS實現文字語音(XE7+小米2)(XE10.1+小米5)

  相關資料: 注意:在手機上必須選安裝文字轉語音引擎“google Text To Speech”地址:http://www.shouji56.com/soft/GoogleWenZiZhuanYuYinYinQingGoogleTexttoSpeech_3864/   結果總結

呼叫科大訊飛API實現文字語音

#ifndef TRANSCODE_AUDIO_H #define TRANSCODE_AUDIO_H typedef void(*TranscodeCallbackFcn)(int, int, void*); extern int transcode_audio(const char *inAudio,

科大訊飛實現文字語音”和“語音文字

請在這裡檢視示例 ☞ iat示例 詳細介紹 這裡整合了科大訊飛官方示例,去除一些不必要的元素,便於開發者理解和應用相關功能 經測試,在chrome瀏覽器下不允許在http協議下使用html5的ap

Python實現文字語音功能

這是一篇簡單的Python文字(漢字)轉語音教程,當然對於其他語言工具在實現的方法上也是一樣的

QT程式文字語音播放

轉自 最近寫一個QT程式時需要用到文字轉語音播放,在網上找了很多關於QT呼叫微軟tts的資料,在這總結一下其中一個使用QAxObject實現的方法,下面原文地址,http://www.cnblogs.com/rockhawk/archive/2011/09/02/2164

js實現文字語音

<script> let msg = new SpeechSynthesisUtterance("你好"); console.log(msg) //msg.rate = 4 播放語速 //msg.pitch = 10

力控呼叫捷通TTS ActiveX控制元件實現中文文字語音

以下程式在WINDOWS XP+力控6.1+捷通TTS控制元件環境下測試通過 以下程式在WINDOWS 10+力控7.1+捷通TTS控制元件環境下測試通過 雙擊容器 點選左鍵動

C++ Builder 源碼:TTS 文字語音,可以朗讀文字,或者把文字轉為 wav 聲音文件

源碼 img 操作 sde lan 語音 skill http sta TTSDemo / TVictorTTS: 兼容 C++ Builder 2010 ~ C++ Builder 10 (CX) 版本 ? 包括 Win32 和 Win64 兩個版本。兼容的操作系統:W

web端文字語音的幾種方案

網站 文字轉語音 rate str source req 實現 mes contex 最近在開發一個微信排隊取號的的系統,其中對於服務員端(管理端) 需要有呼叫功能,即點按鈕 就播出"xxx號顧客請就座"的聲音。 經過在網上一番搜索研究,web端實現指定文字的語音播放 方案

ios原生文字語音

link inf oid uic 是我 代理方法 聲音錄制 初始 https 因新項目需求,需要接入類似支付寶收款提示聲----“支付寶到賬xxxx元”,就查看了一些文章,蘋果還是想的很周全,廢話不多說。 首先 在General -> Linked Framewor

Android文字語音引擎(TTS)使用

ner amp ucc count google 簡單 com 播報 androi 百度網盤下載地址 密碼:3si0 簡單比較 (應用包名) * com.svox.pico 系統自帶不支持中文語音 * com.svox.classic 搜svox

C#文字語音以及語音閱讀小例項

轉載自:猿哥愛碼 c#實現語音閱讀以及文字轉語音檔案是基於c#的一個類庫(SpeechSynthesizer )實現的, 使用該類必須要新增引用using System.Speech.Synthesis;直接是無法新增引用的, 先對專案進行新增應用 示例圖 using System;

Android Studio 接入 訊飛 語音合成(文字語音

1.下載相應的SDK(參考我上一篇文章:https://mp.csdn.net/postedit/83743563) 2.佈置資源 . 3.新增許可權 :在Application的根目錄下,為了可以訪問手機的一些功能 <!--連線網路許可權,用於執行雲端語音能力 -->

蘋果原生文字語音播報

speech idc all prop 文字轉語音 default 配置 The class 1、CHiOSSpeech.h // // 文 件 名:CHiOSSpeech.h // // 版權所有:Copyright ? 2018年 leLight. All right

Microsoft Azure——文字語音(TTS) REST API 使用教程

最近的工作需要用到文字轉語音(Text-to-Speech, TTS),故簡單地研究了現有的技術,在此與大家分享。 Azure上,語音部分的文件寫的較為詳細,包含各種功能,如TTS API,TTS SDK,自定義語音模型進行文字轉語音等。但是沒有整體的、提綱挈領般的介紹

Android百度語音整合——文字語音

       專案涉及文字轉語音的需求,用Android原生提供的TTS生成的語音太單調,機器聲音太明顯,故尋求第三方更好的支援,用科大訊飛的語音包收費,百度語音免費而且不限制呼叫次數,主頁鮮明說永久免費的智慧語音開放平臺,故使用百度語音來支援。 &nbs

修改Setting中文字語音選項的首選引擎預設項

進入framework/base/core/java/android/speech/tts/TextToSpeech.java這個檔案, 發現有個引數 puclic static final String DEFAULT_ENGINE = “com.svox.p

迅捷語音雲服務線上文字語音的方法

當我們在工作中,我們會用到不同的文字形式,我們需要這些文字轉換成語音的形式,下面就讓小編給大家介紹一下。步驟一:然後通過搜尋迅捷語音雲服務,我們可以直接進入到線上轉換中,找到文字轉語音; 步驟二:然後進行檔案的輸出格式、音色型別等設定好; 步驟三:等自定義完成之後就可以進行文字的輸入,將文字輸入到矩形框中;