调用百度语音合成API,Qt实现语音合成,Qt语音合成

来源:so.csdn.net 发布时间:Dec 7, 2020, 12:51:37 AM 原地址:https://blog.csdn.net/weixin_44421743/article/details/110807806

概述

本文介绍了使用Qt调用百度语音合成API的详细过程,调用过程十分简单,关键在于掌握获取个人的access_token。首先必须有百度账号,账号注册过程不在赘述。(注:软件环境,Qt5.14.2;)

开通语音合成服务

进入百度云主页,按下图顺序找到语音合成服务并开通。
在这里插入图片描述
在这里插入图片描述

创建语音技术应用

开通服务之后,进入控制台,在控制台左侧选择语音技术,进入,点击创建应用。这里我已创建好一个语音合成应用。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
创建成功后可以看到APIKey和SecretKey,记录下这两个值,接下来使用其获取access_token。
在这里插入图片描述

使用Qt调用百度语音合成API

百度语音技术文档
在这里插入图片描述
1.获得access_tocken
方法:将自己的APIKey和APISecret分别填入下述网址,APIKey对应client_id,APISecret对应client_secret,然后在浏览器中访问此网址,返回的数据中,有一条就是我们需要的access_token。

// appKey = Va5yQRHl********LT0vuXV4
// appSecret = 0rDSjzQ20XUj5i********PQSzr5pVw2
https://openapi.baidu.com/oauth/2.0/token?grant_type=client_credentials&client_id=Va5yQRHl********LT0vuXV4&client_secret=0rDSjzQ20XUj5i********PQSzr5pVw2

链接修改正确后,访问,有一项access_token,记录此值。

{
   
    "access_token": "1.a6b7dbd428f731035f771b8d********.86400.1292922000-2346678-124328",
    "expires_in": 2592000,
    "refresh_token": "2.385d55f8615fdfd9edb7c4b********.604800.1293440400-2346678-124328",
    "scope": "public audio_tts_post ...",
    "session_key": "ANXxSNjwQDugf8615Onqeik********CdlLxn",
    "session_secret": "248APxvxjCZ0VEC********aK4oZExMB",
}

2.获得合成接口

接下来拼接参数,拼接参数后,即可在代码中使用参数链接,获得相应文本的语音数据。将下述链接中的tok值替换为自己的access_token,tex值我们在Qt调用时修改,tex值即为需要转为语音的文本内容。本文使用GET调用方式,还需要在下述链接中加入cuid参数,cuid中填写本机MAC地址。查看本机MAC地址的方法很多,不再赘述。访问接口,可以下载MP3文件。

http://tsn.baidu.com/text2audio?lan=zh&ctp=1&cuid=abcdxxx&tok=1.a6b7dbd428f731035f771b8d****.86400.1292922000-2346678-124328&tex=%e7%99%be%e5%ba%a6%e4%bd%a0%e5%a5%bd&vol=9&per=0&spd=5&pit=5&aue=3
// 这是一个正常MP3的下载url
// tex在实际开发过程中请urlencode2次

最终的接口链接为

"http://tsn.baidu.com/text2audio?lan=zh&ctp=1&cuid=xx-xx-xx-xx-xx-xxcuid填写本机的MAC地址&tok=换成自己的&vol=9&per=0&spd=5&pit=5&aue=3&per=4&tex="

3.Qt调用
mainwindow.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
   
    ui->setupUi(this);
    media_player =new QMediaPlayer(this);
    connect(ui->pushButton,SIGNAL(clicked()),this,SLOT(texttospeech()));
}
MainWindow::~MainWindow()
{
   
    delete ui;
}
void MainWindow::texttospeech()
{
   
       QString text=ui->lineEdit->text();
       //修改链接,cuid填写本机MAC地址,tok换成自己的
       QByteArray url="http://tsn.baidu.com/text2audio?lan=zh&ctp=1&cuid=xx-xx-xx-xx-xx-xxcuid填写本机的MAC地址&tok=换成自己的&vol=9&per=0&spd=5&pit=5&aue=3&per=4&tex=";
       url.append(QUrl::toPercentEncoding(text));
       //播放url里面的音频
       media_player->setMedia(QUrl::fromLocalFile(url));
       media_player->play();
}

mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include<QMediaPlayer>
QT_BEGIN_NAMESPACE
namespace Ui {
    class MainWindow; }
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
   
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();
    QMediaPlayer* media_player;
private slots:
    void texttospeech();
private:
    Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H

main.cpp

#include "mainwindow.h"
#include <QApplication>
int main(int argc, char *argv[])
{
   
    QApplication a(argc, argv);
    MainWindow w;
    w.show();
    return a.exec();
}

界面只有两个控件,非常简单。
在这里插入图片描述

Qt工程下载链接

点击下载工程,免费链接,不需要积分。可能需要关注一下,下载完成,取消关注即可。