来源:so.csdn.net
发布时间:Dec 7, 2020, 12:51:37 AM
原地址:https://blog.csdn.net/weixin_44421743/article/details/110807806
调用百度语音合成API
概述
本文介绍了使用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工程下载链接
点击下载工程,免费链接,不需要积分。可能需要关注一下,下载完成,取消关注即可。