为语音识别录制pcm音频文件

在PC上使用科大讯飞语音识别或听写的sdk时,需要提前录制好pcm文件,并且文件格式要求为16K、16bit、单声道、无压缩,在我们测试的时候,我们可以用音频软件去转化成这一格式,但集成编程时,我们必须要编程来进行录音。在这里,我简单说一下在linux环境下,如何用qt进行录音:

算了,废话不多说,直接上代码,用了可以记得好评啊!:

#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include 
#include 
#include 
#include
#include 
#include 
namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();

private slots:
    void on_pushButton_clicked();

    void on_pushButton_2_clicked();

private:
    Ui::MainWindow *ui;
    QAudioInput *audioInput;
     QFile inputFile;
};

#endif // MAINWINDOW_H

继续!

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include"QDebug"
#include 
#include 
#include 
#include 

#include
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::on_pushButton_clicked()
{


       inputFile.setFileName("/home/ghy1234567oice/test.pcm");
       inputFile.open(QIODevice::WriteOnly | QIODevice::Truncate);
       QAudioFormat format;
       format.setSampleRate(16000);
       //format.setChannels(1);
       format.setChannelCount(1);
       format.setSampleSize(16);
       format.setCodec("audio/pcm");
       format.setByteOrder(QAudioFormat::LittleEndian);
       format.setSampleType(QAudioFormat::SignedInt);
       QAudioDeviceInfo info(QAudioDeviceInfo::defaultInputDevice());
       if (!info.isFormatSupported(format))
       {
           qWarning() << "default format not supported try to use nearest";
           format = info.nearestFormat(format);
       }
       audioInput = new QAudioInput(format, this);
       //QTimer::singleShot(10000, this, SLOT(stopRecording()));
       audioInput->start(&inputFile);
       qDebug() << "record begin!";
//       for(int i=0;i<100000;i++)
//           for(int j=0;j<10000;j++);
    //    sleep(4);

//       audioInput->stop();
//       inputFile.close();
//       delete audioInput;
//       qDebug() << "record end!";
}

void MainWindow::on_pushButton_2_clicked()//
{
       audioInput->stop();
       inputFile.close();
       delete audioInput;
       qDebug() << "record end!";
}
在.pro文件中可以加入QT  +=multimedia

点击一个按钮,录音开始,点击另一个按钮,录音结束,可以将录制好的pcm文件利用Col edit pro软件进行分析,查看数据格式是否符合要求

想去去掉按钮的话,可以在开始录音和结束录音之间设置定时器,定时器时间一般以4S为宜。

你可能感兴趣的:(linux下QT开发,Linux下用QT开发语音交互,ubuntu,科大讯飞,语音识别,qt5)