summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTuomas Tuononen <tuomas.tuononen@code-q.fi>2015-10-08 15:37:09 +0300
committerTuomas Tuononen <tuomas.tuononen@code-q.fi>2015-11-23 11:58:11 +0000
commit1220b773abe33702143f1b94c038446f6ab24dbc (patch)
tree2b765a65aa03d5ba1f28ad675b4f1943c00856f8
parent3a2eb09368aa1871d93830fa70b90a55c03003be (diff)
SpeechRecognition: Use command line option for plug-in debug audio
- Add command line parameter "--speechrecognition-debug-directory" that is parsed in the plug-in base class. - Remove engine parameter "DebugAudioDirectory" Change-Id: I7d32c17b0bad51e763cead825bd2b1a2d9829dc2 Reviewed-by: Andrew Knight <andrew.knight@intopalo.com>
-rwxr-xr-xsrc/asr/qspeechrecognitionengine.cpp13
-rw-r--r--src/asr/qspeechrecognitionengine.h1
-rwxr-xr-xsrc/asr/qspeechrecognitionpluginengine.cpp38
-rw-r--r--src/asr/qspeechrecognitionpluginengine.h1
-rw-r--r--src/asr/qspeechrecognitionpluginengine_p.h1
-rw-r--r--src/plugins/asr/pocketsphinx/doc/src/pocketsphinx.qdoc21
-rwxr-xr-xsrc/plugins/asr/pocketsphinx/qspeechrecognitionengine_pocketsphinx.cpp1
7 files changed, 45 insertions, 31 deletions
diff --git a/src/asr/qspeechrecognitionengine.cpp b/src/asr/qspeechrecognitionengine.cpp
index f7d822c..56223aa 100755
--- a/src/asr/qspeechrecognitionengine.cpp
+++ b/src/asr/qspeechrecognitionengine.cpp
@@ -84,13 +84,6 @@ Q_DEFINE_ASR_ENGINE_PARAMETER(ResourceDirectory);
*/
Q_DEFINE_ASR_ENGINE_PARAMETER(DataDirectory);
-/*! \variable QSpeechRecognitionEngine::DebugAudioDirectory
-
- This constant is used as the key for a speech recognition engine parameter.
- See supportedParameters().
-*/
-Q_DEFINE_ASR_ENGINE_PARAMETER(DebugAudioDirectory);
-
/*! \variable QSpeechRecognitionEngine::AudioSampleRate
This constant is used as the key for a speech recognition engine parameter.
@@ -202,12 +195,6 @@ Q_DEFINE_ASR_ENGINE_PARAMETER(AudioInputDevices);
can be stored between application restarts. If not given, the program's
working directory is used.
\row
- \li \l DebugAudioDirectory
- \li QString
- \li Path to a directory where the engine should write all the audio clips that go
- to the recognizer. If not given (or empty), no audio clips will be produced.
- This feature is meant to be used only for debugging purposes.
- \row
\li \l AudioSampleRate
\li int
\li Samples per second in the input audio. Default: 16000.
diff --git a/src/asr/qspeechrecognitionengine.h b/src/asr/qspeechrecognitionengine.h
index afea163..42bd3ae 100644
--- a/src/asr/qspeechrecognitionengine.h
+++ b/src/asr/qspeechrecognitionengine.h
@@ -69,7 +69,6 @@ public:
static const QString Dictionary;
static const QString ResourceDirectory;
static const QString DataDirectory;
- static const QString DebugAudioDirectory;
static const QString AudioSampleRate;
static const QString AudioInputFile;
static const QString AudioInputDevice;
diff --git a/src/asr/qspeechrecognitionpluginengine.cpp b/src/asr/qspeechrecognitionpluginengine.cpp
index 7bd1f85..f282354 100755
--- a/src/asr/qspeechrecognitionpluginengine.cpp
+++ b/src/asr/qspeechrecognitionpluginengine.cpp
@@ -40,6 +40,8 @@
#include <QFileInfo>
#include <QDataStream>
#include <QLoggingCategory>
+#include <QCoreApplication>
+#include <QCommandLineParser>
QT_BEGIN_NAMESPACE
@@ -274,6 +276,14 @@ QSpeechRecognitionPluginEngine::QSpeechRecognitionPluginEngine(const QString &na
QVariantMap initialParameters = parameters;
QVariantMap knownParameters;
Q_D(QSpeechRecognitionPluginEngine);
+ QCommandLineParser parser;
+ QCommandLineOption debugDirectory(QLatin1String("speechrecognition-debug-directory"),
+ QLatin1String("Write speech recognition debug output to <directory>."),
+ QLatin1String("directory"));
+ parser.addOption(debugDirectory);
+ parser.process(QCoreApplication::arguments());
+ if (parser.isSet(debugDirectory))
+ d->m_debugDirectory = parser.value(debugDirectory);
// Initialize built-in parameters to their default values if the value is not set:
if (!initialParameters.contains(QSpeechRecognitionEngine::Locale))
initialParameters.insert(QSpeechRecognitionEngine::Locale, locale());
@@ -484,12 +494,21 @@ QString QSpeechRecognitionPluginEngine::localizedFilePath(const QString &filePat
}
/*!
+ Gets the debug directory path from application command line parameter
+ "--speechrecognition-debug-directory". If not set, returns an empty string.
+*/
+QString QSpeechRecognitionPluginEngine::debugDirectory() const
+{
+ Q_D(const QSpeechRecognitionPluginEngine);
+ return d->m_debugDirectory;
+}
+
+/*!
Creates a WAV-file for writing debug audio.
If \a filePath is an absolute path, always attempts to create the file. If a relative
- file path is given, only creates the file if engine parameter
- QSpeechRecognitionEngine::DebugAudioDirectory has been set (see
- QSpeechRecognition::createEngine()).
+ file path is given, only creates the file if command line parameter
+ "--speechrecognition-debug-directory" has been set to a valid directory path.
Parameters \a sampleRate, \a sampleSize and \a channelCount specify the type of audio data
that will be written to the file. Sample size should be expressed in bits.
@@ -502,17 +521,14 @@ QString QSpeechRecognitionPluginEngine::localizedFilePath(const QString &filePat
*/
QFile *QSpeechRecognitionPluginEngine::openDebugWavFile(const QString &filePath, int sampleRate, int sampleSize, int channelCount)
{
- Q_D(const QSpeechRecognitionPluginEngine);
QString finalPath;
+ QString debugDirectoryPath = debugDirectory();
if (QDir::isAbsolutePath(filePath)) {
finalPath = filePath;
- } else if (d->m_parameters.contains(QSpeechRecognitionEngine::DebugAudioDirectory)) {
- QString audioDirPath = d->m_parameters.value(QSpeechRecognitionEngine::DebugAudioDirectory).toString();
- if (!audioDirPath.isEmpty()) {
- QDir audioDir(audioDirPath);
- if (audioDir.exists())
- finalPath = audioDir.absoluteFilePath(filePath);
- }
+ } else if (!debugDirectoryPath.isEmpty()) {
+ QDir audioDir(debugDirectoryPath);
+ if (audioDir.exists())
+ finalPath = audioDir.absoluteFilePath(filePath);
}
if (!finalPath.isEmpty()) {
qCDebug(lcSpeechAsr) << "QSpeechRecognitionPluginEngine: Writing debug audio to file" << finalPath;
diff --git a/src/asr/qspeechrecognitionpluginengine.h b/src/asr/qspeechrecognitionpluginengine.h
index 1a90719..28e0830 100644
--- a/src/asr/qspeechrecognitionpluginengine.h
+++ b/src/asr/qspeechrecognitionpluginengine.h
@@ -89,6 +89,7 @@ protected:
int audioSampleRate() const;
QString audioInputFile() const;
QString localizedFilePath(const QString &filePath) const;
+ QString debugDirectory() const;
QFile *openDebugWavFile(const QString &filePath, int sampleRate, int sampleSize, int channelCount);
virtual QSpeechRecognition::Error updateParameter(const QString &key, const QVariant &value, QString *errorString) = 0;
diff --git a/src/asr/qspeechrecognitionpluginengine_p.h b/src/asr/qspeechrecognitionpluginengine_p.h
index 7ed91c6..1caa3cb 100644
--- a/src/asr/qspeechrecognitionpluginengine_p.h
+++ b/src/asr/qspeechrecognitionpluginengine_p.h
@@ -53,6 +53,7 @@ class QSpeechRecognitionPluginEnginePrivate : public QObjectPrivate
public:
static QStringList findFilesWithWildcards(const QString &filePath);
QString m_name;
+ QString m_debugDirectory;
QVariantMap m_parameters;
};
diff --git a/src/plugins/asr/pocketsphinx/doc/src/pocketsphinx.qdoc b/src/plugins/asr/pocketsphinx/doc/src/pocketsphinx.qdoc
index 5ea5114..cbae212 100644
--- a/src/plugins/asr/pocketsphinx/doc/src/pocketsphinx.qdoc
+++ b/src/plugins/asr/pocketsphinx/doc/src/pocketsphinx.qdoc
@@ -32,7 +32,8 @@
\keyword PocketSphinx
- The engine provider name for this plug-in is "pocketsphinx".
+ The name of this plug-in is "pocketsphinx". The name should be given as a
+ parameter to QSpeechRecognition::createEngine().
The plug-in only supports JSGF-format grammars (loading from Qt resources is supported).
@@ -88,10 +89,6 @@
\li QString
\li
\row
- \li \l {QSpeechRecognitionEngine::}{DebugAudioDirectory}
- \li QString
- \li
- \row
\li \l {QSpeechRecognitionEngine::}{AudioSampleRate}
\li int
\li
@@ -109,6 +106,20 @@
\li
\endtable
+ The following table lists the command line parameters that affect the plug-in behavior:
+
+ \table
+ \header
+ \li Parameter
+ \li Value type
+ \li Description
+ \row
+ \li --speechrecognition-debug-directory
+ \li Path to an existing directory
+ \li Path to a directory where the engine should write all the audio clips that go
+ to the recognizer. This feature is meant to be used only for debugging purposes.
+ \endtable
+
\section1 Quick Start Guide
The following instructions are for setting up the PocketSphinx engine for US English.
diff --git a/src/plugins/asr/pocketsphinx/qspeechrecognitionengine_pocketsphinx.cpp b/src/plugins/asr/pocketsphinx/qspeechrecognitionengine_pocketsphinx.cpp
index 7320b9b..c16efc3 100755
--- a/src/plugins/asr/pocketsphinx/qspeechrecognitionengine_pocketsphinx.cpp
+++ b/src/plugins/asr/pocketsphinx/qspeechrecognitionengine_pocketsphinx.cpp
@@ -72,7 +72,6 @@ QSpeechRecognitionEnginePocketSphinx::QSpeechRecognitionEnginePocketSphinx(const
<< QSpeechRecognitionEngine::Dictionary
<< QSpeechRecognitionEngine::ResourceDirectory
<< QSpeechRecognitionEngine::DataDirectory
- << QSpeechRecognitionEngine::DebugAudioDirectory
<< QSpeechRecognitionEngine::AudioSampleRate
<< QSpeechRecognitionEngine::AudioInputFile
<< QSpeechRecognitionEngine::AudioInputDevices