summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-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