为语音识别录制pcm音频文件
·
在PC上使用科大讯飞语音识别或听写的sdk时,需要提前录制好pcm文件,并且文件格式要求为16K、16bit、单声道、无压缩,在我们测试的时候,我们可以用音频软件去转化成这一格式,但集成编程时,我们必须要编程来进行录音。在这里,我简单说一下在linux环境下,如何用qt进行录音:
算了,废话不多说,直接上代码,用了可以记得好评啊!:
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QTimer>
#include <QMainWindow>
#include <QAudioEncoderSettings>
#include<QAudioRecorder>
#include <QtMultimedia/QAudioInput>
#include <QFile>
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 <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <unistd.h>
#include<QAudioFormat>
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为宜。
更多推荐



所有评论(0)