void MyEngine::recordVoice() { qDebug() << "Called recordVoice" ; QAudioDeviceInfo info = QAudioDeviceInfo::defaultInputDevice(); foreach (const QString &str, info.supportedCodecs ()) qDebug() << "Supported codecs: "<< str; foreach (const QAudioDeviceInfo &audioDeviceInfo, QAudioDeviceInfo::availableDevices ( QAudio::AudioInput )) qDebug() << "Devices: " << audioDeviceInfo.deviceName(); outputFile.setFileName("test.raw"); outputFile.open( QIODevice::WriteOnly | QIODevice::Truncate )?qDebug() << "file created":qDebug() << "file creation error"; //qDebug() << "Sample rate: " << format.sampleRate(); //QAudioDeviceInfo info = QAudioDeviceInfo::defaultInputDevice(); if (!info.isFormatSupported(format)) { qWarning()<<"default format not supported try to use nearest"; format = info.nearestFormat(format); } audio = new QAudioInput(format, this); connect(audio, SIGNAL(stateChanged(QAudio::State)), this, SLOT(stateChanged(QAudio::State))); QTimer::singleShot(2000, this, SLOT(stopRecording())); // Records audio for 2 sec audio->start(&outputFile); }
FrequencyAnalyzer::FrequencyAnalyzer(QObject *parent) : QObject(parent), d_ptr(new FrequencyAnalyzerPrivate(this)) { Q_D(FrequencyAnalyzer); QAudioDeviceInfo info = QAudioDeviceInfo::defaultInputDevice(); qDebug() << "device name: " << info.deviceName() << "\n" << "supported frequency:" << info.supportedFrequencies() << "\n" << "supported codecs" << info.supportedCodecs() << "\n" << "supported sample sizes" << info.supportedSampleSizes() << "\n" << "supported sample types" << info.supportedSampleTypes() << "\n"; QAudioFormat format = info.preferredFormat(); format.setCodec("audio/pcm"); format.setByteOrder(QAudioFormat::LittleEndian); format.setSampleType(QAudioFormat::SignedInt); format.setSampleSize(32); //format.setFrequency(d->sampling = 11025); //format.setFrequency(d->sampling = 22050); format.setFrequency(d->sampling = info.supportedFrequencies().last()); format.setChannelCount(1); if (!info.isFormatSupported(format)) { qWarning("Format is unsupported"); return; } d->input = new QAudioInput(info, format, this); connect(d->input, SIGNAL(stateChanged(QAudio::State)), SLOT(_q_onStateChanged())); }
bool CSoundCommonQT::isDeviceGood(const QAudioDeviceInfo &di, const int *desiredsamplerates) const { bool bSampleRateOk = false; for (const int* dsr=desiredsamplerates; *dsr; dsr++) { int samplerate = abs(*dsr); if (isSampleRateSupported(di, samplerate)) { bSampleRateOk = true; break; } } return bSampleRateOk && di.supportedChannelCounts().contains(2) && // TODO di.supportedSampleSizes().contains(16) && di.supportedSampleTypes().contains(QAudioFormat::SignedInt) && di.supportedByteOrders().contains(QAudioFormat::LittleEndian) && di.supportedCodecs().contains("audio/pcm"); }