听说论坛没有C++程序?那来吧!基于C++Qt开发的新玩具:OpenAI + TTS

昨晚始皇发的新玩具,今天上班无聊也凑凑热闹

开发工具

  • 集成开发环境(IDE):Qt Creator

技术栈

  • 开发语言:C++
  • UI 框架:Qt
  • 网络通信:QNetworkAccessManager
  • JSON 处理:QJsonDocument
  • 用户界面:Qt Widgets

程序介绍

PastKing_2024-04-08_14-52-33


这里生成成功就在可执行程序的根目录

核心代码

void Widget::toRequest(QString &urlService,QString &strKey,QString &strText, const QString &filePath){
    QUrl url(urlService);
    QNetworkRequest request(url);

    //请求头
//    QString strNew = "Bearer ";
//    strNew.append(strKey);
//    qDebug()<<strNew;
    QByteArray strNew;
    strNew = "Bearer " + strKey.toUtf8(); // 转换为 QByteArray
    request.setRawHeader("Authorization",strNew);
    request.setHeader(QNetworkRequest::ContentTypeHeader,"application/json");
    //请求体
    QJsonObject json;
    json.insert("model","tts-1-hd");
    json.insert("voice","alloy");
    json.insert("response_format","mp3");
    json.insert("speed",1);
    json.insert("input",strText);
    QJsonDocument doc(json);
    QByteArray data = doc.toJson();

    //发送请求
    QNetworkReply *reply = manager->post(request,data);
    //等待请求结果
    QObject::connect(reply,&QNetworkReply::finished,this, [this, reply,filePath](){
        if(reply->error() == QNetworkReply::NoError){
            //请求成功,保存音频
            QFile file(filePath);
            if(file.open(QIODevice::WriteOnly)){
                file.write(reply->readAll());
                file.close();
                 QMessageBox::information(this, "成功", "音频生成成功,文件已保存。");
                qDebug()<<"音频生成成功";
            }else{
                 QMessageBox::critical(this, "错误", "文件无法保存。");
            }
        }else{
            qDebug()<<"音频生成失败!请检查网络、地址、Key/Token是否出错!!!";
            QMessageBox::critical(this, "失败", "音频生成失败!请检查网络、地址、Key/Token是否出错!!!");
        }
        reply->deleteLater();
    });
}

下载

打包好的新玩具:https://xcyp.lanzoub.com/iu4sC1uc0rta
源码:https://xcyp.lanzoub.com/iHoPX1uc0ufe

20 个赞

好,填补论坛空缺,激动!

5 个赞

image

2 个赞

不错,很有用,如果能选择音色,语速就更好了

1 个赞

就会这点了

1 个赞

这个好做,就是嫌麻烦,要不然就一起做出来了,哈哈哈:crazy_face:

1 个赞

有c++啊, 就只会c++, qt都没用过 :face_with_peeking_eye:

1 个赞

TTSmaker有个现成使用的,很多语音类型选择,就是有字数限制,不过一般人够用了。 在线免费文字转语音 - TTSMaker官网 | 马克配音

1 个赞

大佬降临

始皇的新玩具4o+TTS+Whisper糊了个玩具

1 个赞

From #develop:ai to 资源荟萃