想要多了解QtSpeech,那么随着本文的文字往下走吧!QtSpeech是一个Qt封装的跨平台TTS(文本变成语音输出)API,在不同平台下利用系统自带的TTS引擎。在Windows下使用SAPI, 在Mac下使用SpeechSynthesis,而在Linux下使用 Festival.

QtSpeech的官方项目主页在: http://lynxline.com/projects/qtspeech

源码git仓库地址则在: http://gitorious.org/qt-speech

API的使用非常简单,如果你是同步调用,发音结束后返回,可以使用QtSpeech::say

  1. <blockquote>#include <QtSpeech>
  2. QtSpeech voice;
  3. voice.say(“Hello World!”);

如果是异步调用(发音不会阻塞程序运行),则可以使用QtSpeech::tell

  1. <blockquote>#include <QtSpeech>
  2. QtSpeech * voice = new QtSpeech(this);
  3. voice->tell(“Hello asynchronous world!”);

如果使用QtSpeech::tell,还可以加入slot函数,在发音结束时回调该slot

  1. voice->tell(“Hello!”, this, SLOT(onSpeechFinished()));

VoiceName可以用于设定发音类型的,比如英语或者法语,意大利语等

  1. QtSpeech::VoiceNames vs = QtSpeech::voices();

//不过,目前从源代码来看只支持英语

在ubuntu下编译

  1. $ #qtspeech 依赖的tts是festival,所以需要先安装
  2. $ sudo apt-get install festival festival-dev
  3. $ sudo apt-get install libasound2-dev
  4. $ git clone git://gitorious.org/qt-speech/qt-speech.git
  5. $ cd qt-speech/
  6. $ qmake QtSpeech.pro
  7. $ make
  8. $ #test

目录下有可以测试的例子,记得把音箱打开

小结:QtSpeech就介绍到这里吧,注意了,头文件得自己手动添加,如果还出错的话,那就是你没装Qt开发包!!!不要饭低级错误哦。

QtSpeech, say “Hello World!”

By admin | Published: February 10, 2011

I am glad to announce new small project that got first release – QtSpeech.
This is library providing Qt-like interface to system TTS (text-to-speech) engines to allow your application to say “Hello World!”.

Current API is very simple.
First you need to include <QtSpeech>. Then if your application just needed to say something synchronously (execution will wait in the point until speech is finished) you can use such code:

1 #include <QtSpeech>
2  
3 QtSpeech voice;
4 voice.say("Hello World!");

If you would like to do this in asynchronous way (so your application is not blocked meanwhile) just use tell() call:

 
1 QtSpeech * voice = new QtSpeech(this);
2 voice->tell("Hello asynchronous world!");

If you need to invoke a slot at the end, use:

 
1 voice->tell("Hello!"this, SLOT(onSpeechFinished()));

Also you have possibility to get list of voices and choose voice from available in your system:

 
1 QtSpeech::VoiceNames vs = QtSpeech::names()

Current implementation support Windows using SAPI and Mac. I have plans to extend API to include more functionality but will try to choose what is common on all platforms.

Link to repository in Gitorius: http://gitorious.org/qt-speech

QtSpeech会让Qt说话的更多相关文章

  1. 用Qt写软件系列五:一个安全防护软件的制作(2)

    引言 在上一篇中讲述了主窗体的创建和设计.主窗体的无边框效果.阴影效果.拖动事件处理.窗体美化等工作在前面的博客中早就涉及,因此上篇博文中并未花费过多笔墨.这一篇继续讲述工具箱(Tool Button ...

  2. Qt中widget重新setParent需要注意的问题

    有时候需要在widget中重新setParent,但会发现setParent有时候会出现问题,比如子窗口不在刷出来等等. 其实,有一点是需要注意的,就是Qt文档里说的,如果你当前widget重新设置了 ...

  3. Qt Windows下链接子系统与入口函数(终结版)(可同时存在main和WinMain函数)

    Qt Windows下链接子系统与入口函数(终结版) 转载自:http://blog.csdn.net/dbzhang800/article/details/6358996 能力所限,本讨论仅局限于M ...

  4. 关于Qt信号与槽机制的传递方向性研究(结论其实是错误的,但是可以看看分析过程)

    最近由于项目的需求,一直在研究Qt.信号与槽机制是Qt的一大特色,该机制允许两者间传递参数,依次来实现对象间的通信.这个参数会分别存在于信号的参数列表和槽函数的参数列表中.需要注意的是,若将槽函数绑定 ...

  5. C++ ABI之名字改变,编译器生成符号研究(以Qt为例)

    在C++中,由于重载等技术的存在,编译器要将函数.结构体.类等等的信息传递给链接器,就不能像C语言那样简单地通过函数名来完成,它需要提供额外的参数信息,而还要和C语言共用链接器,这就需要用到名字改编( ...

  6. 【Qt编程】基于Qt的词典开发系列<十二>调用讲述人

    我们知道,win7系统自带有讲述人,即可以机器读出当前内容,具体可以将电脑锁定,然后点击左下角的按钮即可.之前在用Matlab写扫雷游戏的时候,也曾经调用过讲述人来进行游戏的语音提示.具体的Matla ...

  7. 【Qt编程】3D迷宫游戏

    说起迷宫想必大家都很熟悉,个人感觉迷宫对人的方向感是很大的考验,至少我的方向感是不好的,尤其是在三维空间中.由于这段时间帮导师做项目用到了三维作图,便心血来潮想做个三维迷宫玩玩.要想画出三维的迷宫游戏 ...

  8. [UI基础][不会说话的汤姆猫]

    会说话的汤姆猫这个APP层级风靡一时,其UI部分就是利用了序列动画的技术, 接下来 我们用汤姆猫来演示怎么制作序列动画. [要求]: 1.学会使用序列动画的方法 2.学会分析动画播放中内存占用高的问题 ...

  9. qt 透明化方法汇总

    一. QT 透明设置 背景,标题栏透明,下级Widget,painter绘出来的(比如,drawtext,drawline)不透明 QWidget window; window.setWindowFl ...

随机推荐

  1. Excel Cannot Connect to SharePoint List

    As I am working in SharePoint support, I come across so many issues on day 2 day basis and always tr ...

  2. 函数lock_mode_stronger_or_eq 锁权限等级

    row代表lock HashTable的权限 column代表预加锁的权限    ulint lock_mode_stronger_or_eq( /*=====================*/ e ...

  3. 百万程序员的苦恼-选择VB.NET还是C#

    在过去的一年中,互联网上的各大讨论区或者电子邮件的讨论列表都对微软的VB.NET以及C#的各种优越性做了探讨.这些讨论围绕的主要问题就是,我应该先学哪一个,VB.NET还是C#?? 我写这篇文章的目的 ...

  4. BZOJ_1607_ [Usaco2008_Dec]_Patting_Heads_轻拍牛头_(筛数)

    描述 http://www.lydsy.com/JudgeOnline/problem.php?id=1607 给出一组n个数,求每个数能被多少个其他的数整除. 分析 暴力一点的做法就是每个数去筛它的 ...

  5. [light oj 1013] Love Calculator

    1013 - Love Calculator Yes, you are developing a 'Love calculator'. The software would be quite comp ...

  6. win7无法识别U盘,驱动信息:该设备的驱动程序未被安装。 (代码 28)

    台式机的win7 64位系统可以识别u盘,但笔记本的win7 64位却识别不了,说明U盘是可以用的.查看笔记本的设备管理器,发现驱动安装失败,提示信息为“该设备的驱动程序未被安装. (代码 28) ” ...

  7. Using the Task Parallel Library (TPL) for Events

    Using the Task Parallel Library (TPL) for Events The parallel tasks library was introduced with the ...

  8. jps 显示process information unavailable解决方法

    jps 显示process information unavailable解决办法jps时出现如下信息: 4791 -- process information unavailable 解决办法: 进 ...

  9. HTTP协议分析及攻防方法

    HTTP协议简介 应用层协议,无状态协议(可设定为维持TCP连接,但服务器端的资源会释放).默认HTTP的端口号为80,HTTPS的端口号为443. 基于HTTP协议的客户机访问包括4个过程,分别是建 ...

  10. 【CSS】Intermediate8:Page Layout

    1.Layout with CSS is easy. You just take a chunk of your page and shove it wherever you choose 2.pos ...