You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Qt项目中通过Speech Dispatcher调用RHVoice语音引擎?

在Qt C++项目中指定Speech-Dispatcher使用RHVoice的解决方案

方法1:修改Speech-Dispatcher全局配置

Speech-Dispatcher的默认引擎可通过配置文件强制设置为RHVoice,Qt调用TextToSpeech时会自动沿用该配置:

  • 编辑全局配置文件(需sudo权限):/etc/speech-dispatcher/speechd.conf,或用户级配置文件:~/.config/speech-dispatcher/speechd.conf
  • 找到DefaultModule项,修改为:
    DefaultModule "rhvoice"
    
  • 如需指定语言或具体语音,可补充配置(比如DefaultLanguage "zh"或DefaultVoice "your_voice_name",语音名称可通过rhvoice-test工具查看)
  • 重启Speech-Dispatcher服务:sudo systemctl restart speech-dispatcher

方法2:直接调用Speech-Dispatcher原生API

绕过Qt TextToSpeech的封装限制,直接使用libspeechd的API指定RHVoice模块:

  1. 安装libspeechd开发包:sudo apt install libspeechd-dev
  2. 在Qt项目的.pro文件中添加链接依赖:
    LIBS += -lspeechd
    
  3. 调用代码示例:
    #include <speech-dispatcher/libspeechd.h>
    
    void speakWithRHVoice(const QString& text) {
        SPDConnection* conn = spd_open("qt-rhvoice-app", "main", NULL, SPD_MODE_THREADED);
        if (conn) {
            // 指定使用RHVoice模块
            spd_set_module(conn, "rhvoice");
            // 可选:设置具体语音
            spd_set_synthesis_voice(conn, "anna");
            spd_say(conn, SPD_MESSAGE, text.toUtf8().constData());
            // 按需等待播放完成
            while (spd_get_state(conn) != SPD_STATE_READY) {
                usleep(100000);
            }
            spd_close(conn);
        }
    }
    

方法3:通过环境变量临时指定

无需修改配置文件,启动Qt程序前设置环境变量强制Speech-Dispatcher使用RHVoice:

  • 终端启动程序时:
    SPD_DEFAULT_MODULE=rhvoice ./your-qt-app
    
  • Qt Creator中运行时,在项目「运行环境」中添加环境变量:SPD_DEFAULT_MODULE=rhvoice

内容的提问来源于stack exchange,提问作者CPPUIX

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 02:22:26