summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTuomas Tuononen <tuomas.tuononen@code-q.fi>2015-09-16 14:09:37 +0300
committerTuomas Tuononen <tuomas.tuononen@code-q.fi>2015-10-14 07:17:25 +0000
commit6ab8c10340e3a588c4a9ca5e6fa1e1651fef8d34 (patch)
tree1c5dde255e1f70bf2ac5f4133a35274c1416ea4b
parent614f4f7fc307862a96217c4fc3e5978c910897c7 (diff)
PocketSphinx: Move engine parameter initialization to engine class
Change-Id: Ic8353670b02258b4598e22845ffbf30365e92ca9 Reviewed-by: Johannes Oikarinen <johannes.oikarinen@digia.com> Reviewed-by: Frederik Gladhorn <frederik.gladhorn@theqtcompany.com>
-rwxr-xr-xsrc/plugins/asr/pocketsphinx/qspeechrecognitionengine_pocketsphinx.cpp34
-rwxr-xr-xsrc/plugins/asr/pocketsphinx/qspeechrecognitionengine_pocketsphinx.h3
-rwxr-xr-xsrc/plugins/asr/pocketsphinx/qspeechrecognitionplugin_pocketsphinx.cpp16
3 files changed, 34 insertions, 19 deletions
diff --git a/src/plugins/asr/pocketsphinx/qspeechrecognitionengine_pocketsphinx.cpp b/src/plugins/asr/pocketsphinx/qspeechrecognitionengine_pocketsphinx.cpp
index 2f68858..a4c5c8c 100755
--- a/src/plugins/asr/pocketsphinx/qspeechrecognitionengine_pocketsphinx.cpp
+++ b/src/plugins/asr/pocketsphinx/qspeechrecognitionengine_pocketsphinx.cpp
@@ -66,8 +66,8 @@ void PocketShpinxErrorCb(void *user_data, err_lvl_t lvl, const char *fmt, ...)
}
QSpeechRecognitionEnginePocketSphinx::QSpeechRecognitionEnginePocketSphinx(const QString &name,
- const QVariantMap &parameters, const QAudioDeviceInfo &defaultDevice, QObject *parent)
- : QSpeechRecognitionPluginEngine(name, parameters,
+ const QVariantMap &parameters, QObject *parent)
+ : QSpeechRecognitionPluginEngine(name, createEngineParameters(parameters),
QStringList() << "locale"
<< "dictionary"
<< "resourceDirectory"
@@ -80,7 +80,7 @@ QSpeechRecognitionEnginePocketSphinx::QSpeechRecognitionEnginePocketSphinx(const
parent),
m_session(0),
m_decoder(0),
- m_device(defaultDevice),
+ m_device(QAudioDeviceInfo::defaultInputDevice()),
m_audioInput(0),
m_grammar(0),
m_audioBuffer(0),
@@ -90,6 +90,15 @@ QSpeechRecognitionEnginePocketSphinx::QSpeechRecognitionEnginePocketSphinx(const
m_cmnVec(0),
m_cmnSize(0)
{
+ const QVariantMap &engineParams = QSpeechRecognitionPluginEngine::parameters();
+ QString inputDeviceName = engineParams["audioInputDevice"].toString();
+ QList<QAudioDeviceInfo> audioDevices = QAudioDeviceInfo::availableDevices(QAudio::AudioInput);
+ foreach (QAudioDeviceInfo device, audioDevices) {
+ if (!inputDeviceName.isEmpty() && device.deviceName() == inputDeviceName) {
+ m_device = device;
+ break;
+ }
+ }
}
QSpeechRecognitionEnginePocketSphinx::~QSpeechRecognitionEnginePocketSphinx()
@@ -452,6 +461,25 @@ QString QSpeechRecognitionEnginePocketSphinx::localizedFilePath(const QString &f
return QSpeechRecognitionPluginEngine::localizedFilePath(filePath);
}
+QVariantMap QSpeechRecognitionEnginePocketSphinx::createEngineParameters(const QVariantMap &inputParameters)
+{
+ QVariantMap newParameters = inputParameters;
+ QStringList audioDeviceNames;
+ QString inputDeviceName;
+ QAudioDeviceInfo inputDevice = QAudioDeviceInfo::defaultInputDevice();
+ if (inputParameters.contains("audioInputDevice"))
+ inputDeviceName = inputParameters["audioInputDevice"].toString();
+ QList<QAudioDeviceInfo> audioDevices = QAudioDeviceInfo::availableDevices(QAudio::AudioInput);
+ foreach (QAudioDeviceInfo device, audioDevices) {
+ audioDeviceNames.append(device.deviceName());
+ if (!inputDeviceName.isEmpty() && device.deviceName() == inputDeviceName)
+ inputDevice = device;
+ }
+ newParameters.insert("audioInputDevices", audioDeviceNames);
+ newParameters.insert("audioInputDevice", inputDevice.deviceName());
+ return newParameters;
+}
+
bool QSpeechRecognitionEnginePocketSphinx::processNextAudio()
{
if (!m_inputFileDecoder.sourceFilename().isEmpty()) { // File input was selected for this session
diff --git a/src/plugins/asr/pocketsphinx/qspeechrecognitionengine_pocketsphinx.h b/src/plugins/asr/pocketsphinx/qspeechrecognitionengine_pocketsphinx.h
index 02f9493..899130c 100755
--- a/src/plugins/asr/pocketsphinx/qspeechrecognitionengine_pocketsphinx.h
+++ b/src/plugins/asr/pocketsphinx/qspeechrecognitionengine_pocketsphinx.h
@@ -55,7 +55,7 @@ class QSpeechRecognitionEnginePocketSphinx : public QSpeechRecognitionPluginEngi
{
Q_OBJECT
public:
- QSpeechRecognitionEnginePocketSphinx(const QString &name, const QVariantMap &parameters, const QAudioDeviceInfo &defaultDevice, QObject *parent);
+ QSpeechRecognitionEnginePocketSphinx(const QString &name, const QVariantMap &parameters, QObject *parent);
virtual ~QSpeechRecognitionEnginePocketSphinx();
// Plug-in API:
@@ -84,6 +84,7 @@ public slots:
void onAudioDecoderBufferReady();
void onAudioDecoderFinished();
private:
+ static QVariantMap createEngineParameters(const QVariantMap &inputParameters);
bool processNextAudio();
void processAudio(const void *data, size_t dataSize);
void storeCmn();
diff --git a/src/plugins/asr/pocketsphinx/qspeechrecognitionplugin_pocketsphinx.cpp b/src/plugins/asr/pocketsphinx/qspeechrecognitionplugin_pocketsphinx.cpp
index 43d374a..935bca8 100755
--- a/src/plugins/asr/pocketsphinx/qspeechrecognitionplugin_pocketsphinx.cpp
+++ b/src/plugins/asr/pocketsphinx/qspeechrecognitionplugin_pocketsphinx.cpp
@@ -47,21 +47,7 @@ Q_LOGGING_CATEGORY(lcSpeechAsrPocketSphinx, "qt.speech.asr.pocketsphinx")
QSpeechRecognitionPluginEngine *QSpeechRecognitionPluginPocketSphinx::createSpeechRecognitionEngine(const QString &name,
const QVariantMap &parameters, QObject *parent, QString *errorString) const
{
- QVariantMap newParameters = parameters;
- QStringList audioDeviceNames;
- QString inputDeviceName;
- QAudioDeviceInfo inputDevice = QAudioDeviceInfo::defaultInputDevice();
- if (parameters.contains("audioInputDevice"))
- inputDeviceName = parameters["audioInputDevice"].toString();
- QList<QAudioDeviceInfo> audioDevices = QAudioDeviceInfo::availableDevices(QAudio::AudioInput);
- foreach (QAudioDeviceInfo device, audioDevices) {
- audioDeviceNames.append(device.deviceName());
- if (!inputDeviceName.isEmpty() && device.deviceName() == inputDeviceName)
- inputDevice = device;
- }
- newParameters.insert("audioInputDevices", audioDeviceNames);
- newParameters.insert("audioInputDevice", inputDevice.deviceName());
- QSpeechRecognitionEnginePocketSphinx *ps = new QSpeechRecognitionEnginePocketSphinx(name, newParameters, inputDevice, parent);
+ QSpeechRecognitionEnginePocketSphinx *ps = new QSpeechRecognitionEnginePocketSphinx(name, parameters, parent);
if (ps && ps->init(errorString)) {
return ps;
}