Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. International
  3. Chinese
  4. 基于百度云API的语音识别
Forum Updated to NodeBB v4.3 + New Features

基于百度云API的语音识别

Scheduled Pinned Locked Moved Unsolved Chinese
1 Posts 1 Posters 304 Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • Z Offline
    Z Offline
    zjhc
    wrote on last edited by
    #1

    #include "audio.h"
    //#include "qaudiodevice.h"
    #include <QObject>
    #include <QMediaRecorder>
    #include <QMediaCaptureSession>
    #include <QAudioInput>
    #include <QFile>
    #include <QMessageBox>
    #include <QMediaDevices>
    #include <QMediaFormat>
    #include <QDebug>

    Audio::Audio(QObject *parent) : QObject(parent),
    m_captureSession(new QMediaCaptureSession(this)),
    m_mediaRecorder(new QMediaRecorder(this)),
    m_audioInput(nullptr),
    m_outputFile(nullptr)
    {
    }

    void Audio::startAudio(QString fileName)
    {
    // 获取默认的音频输入设备
    //QList<QAudioDevice> audioInputs = QAudioDevice::availableDevices(QAudio::AudioInput);
    QList<QAudioDevice> audioInputs = QMediaDevices::audioInputs();
    //QMediaRecorder::supportedAudioSampleRates();

    if (audioInputs.isEmpty()) {
        QMessageBox::warning(nullptr, "QAudioDevice", "录音设备不存在");
    }
    
    // 假设使用第一个音频输入设备
    QAudioDevice audioDevice = audioInputs.first();
    
    // 创建音频输入
    m_audioInput = new QAudioInput(audioDevice, this);
    
    // 设置媒体捕获会话的音频输入
    m_captureSession->setAudioInput(m_audioInput);
    
    // 设置输出文件名
    m_outputFile = new QFile(fileName);
    
    // 初始化媒体录制器
    m_mediaRecorder->setOutputLocation(QUrl::fromLocalFile(fileName));
    
    // 设置音频编码器等
    QAudioFormat format;
    format.setSampleRate(16000);    // 设置采样率: 16000MHz
    format.setChannelCount(1);
    QMediaFormat f2;
    f2.setAudioCodec(QMediaFormat::AudioCodec::AAC);
    //format.setSampleSize(16);
    
    
    // 开始录制
    if (!m_mediaRecorder->isAvailable())
    {
        // 处理媒体录制器不可用的情况
        qDebug() << "Media recorder is not available"<<m_mediaRecorder->errorString();
    }
    
    // 尝试开始录制
    m_mediaRecorder->record();
    if (!m_outputFile->open(QIODevice::WriteOnly)) {
        // 打开输出文件失败
        qDebug() << "Failed to open output file";
    }
    
    // 检查状态或错误(这里没有直接的方法,但您可以监听状态改变信号)
    if (m_mediaRecorder->error())
    {
        qDebug() << "Recording started";
    }
    

    }

    void Audio::stopAudio()
    {
    m_mediaRecorder->stop();
    m_outputFile->close();
    delete m_outputFile;
    m_outputFile=NULL;
    }

    格式支持:pcm(不压缩)、wav(不压缩,pcm编码)、amr(压缩格式)、m4a(压缩格式)。推荐pcm 采样率 :16000、8000(仅支持普通话模型) 固定值。 编码:16bit 位深的单声道。

    But “Media recorder is not available ""”
    I don‘t know why.

    1 Reply Last reply
    0
    • SGaistS SGaist moved this topic from 3rd Party Software on

    • Login

    • Login or register to search.
    • First post
      Last post
    0
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Groups
    • Search
    • Get Qt Extensions
    • Unsolved