基于 QT5 百度语音API 图灵机器人API 的智能语音聊天机器人

基于 QT5 百度语音API 图灵机器人API 的智能语音聊天机器人

    • 程序简介
    • 代码一共分为以下几个模块
    • 伪代码形式为
    • 部分代码
    • 源代码下载地址

程序简介

程序界面包含录音和发送两个按钮
点录音将开始录音
点发送将停止录音并对录音或在文本框内文字进行相应的处理
最后返回机器人对话结果.
程序在Windows下以及Ubuntu下均测试通过,安卓未测试
Ubuntu下的程序界面就不放了
Windows下测试界面如下:
基于 QT5 百度语音API 图灵机器人API 的智能语音聊天机器人_第1张图片

代码一共分为以下几个模块

    void RefreshToken();//刷新百度鉴权TOKEN模块
    void Initialize(void);//初始化模块
    void to_voice();//百度文字转语音模块
    void Robot();//图灵对话模块
    void on_pushButton_record_clicked();//开始录音模块
    void Network_connection(QNetworkRequest,QByteArray);//HTTP模块
    void result(QNetworkReply *m_rely);//HTTP返回数据解析模块
    void on_pushButton_send_clicked();//停止录音发送数据

伪代码形式为

刷新百度鉴权TOKEN;
初始化设备;
if 点录音按钮 则 开始录音;
if 点发送按钮 则 if 开始录音
则 {停止录音;语音识别;}
否则 图灵对话;
if 语音识别 则 图灵对话
if 图灵对话 则 语音合成

部分代码

一些私有变量的定义.

    Ui::Widget *ui;
    QNetworkAccessManager *AcceseNet;
    QString Token;
    QMediaPlayer *Player;
    QBuffer *Sound_Date = NULL;
    QAudioInput* Recording;
    int Sound_Sign = 0;//录音标识位,0表示未录音或录音已结束,1表示已经开始录音
    int Result_Sign = 2;//0表示返回的是百度语音API识别的文字结果,1表示是图灵机器人返回的对话结果,2表示返回的是百度语音API的token

初始化录音设备.

void Widget::Initialize()//初始化录音设备
{
    QAudioDeviceInfo info;//设置录音设备与录音参数
    const auto &&availableDevices = QAudioDeviceInfo::availableDevices(QAudio::AudioInput);
        if(!availableDevices.isEmpty())
        {
            info = availableDevices.first();
            QAudioFormat format;
            format.setSampleRate(16000);
            format.setChannelCount(1);
            format.setSampleSize(16);
            format.setSampleType(QAudioFormat::SignedInt);
            format.setByteOrder(QAudioFormat::LittleEndian);
            format.setCodec("audio/pcm");
            Recording = new QAudioInput(info, format, this);
        }
        ui->textEdit->setText("初始化......");
}

图灵机器人json封装.

Text.insert("text",data);//对json数据按图灵机器人API要求进行封装
    provideInfo.insert("inputText",Text);//嵌套,图灵机器人json格式要求
    user.insert("apiKey","");//图灵机器人apiKey
    user.insert("userId",""); //每个用户ID固定,图灵机器人判断同一用户则可以识别上下文,经过测试发现图灵机器人的userID仅能为数字
    date.insert("perception",provideInfo);
    date.insert("userInfo",user);

百度语音识别json封装.

 QJsonObject date;
    request.setRawHeader("Content-Type", "application/json");//百度语音识别参数
    date["format"] = "pcm";
    date["rate"] = 16000;
    date["channel"] = 1;
    date["token"] = Token;
    date["dev_pid"] = 1537;//此要求固定值1537
    date["cuid"] = "这里填写你自己的";//用户标识,可使用MAC
    date["speech"] = QString(Sound_Date->data().toBase64());//百度要求将完整的录音数据进行base64编码
    date["len"] = Sound_Date->data().size();//录音数据编码前的字节数

以POST方式进行访问.

  AcceseNet->post(request, byteArray);//以POST方式进行网络访问

读取所有返回数据.

  str = Result_reply->readAll();//读取所有返回数据

对返回数据进行解析.

  QJsonDocument::fromJson(str).object()["result"].toArray()[0].toString();//按照API要求格式进行JSON解析
  QJsonDocument::fromJson(str).object().value("results")[0].toObject().value("values").toObject().value("text").toString();//按照API要求格式进行JSON解析
  QJsonDocument::fromJson(str).object()["access_token"].toString();//按API要求格式进行JSON解析

源代码下载地址

https://download.csdn.net/download/qq_36980354/12032495

你可能感兴趣的:(基于 QT5 百度语音API 图灵机器人API 的智能语音聊天机器人)