diff options
author | Tuomas Tuononen <tuomas.tuononen@code-q.fi> | 2015-10-08 18:13:16 +0300 |
---|---|---|
committer | Tuomas Tuononen <tuomas.tuononen@code-q.fi> | 2015-11-23 11:57:43 +0000 |
commit | baf8e360cfa8461fe91d9fbc8acaec90990e1386 (patch) | |
tree | c23fcf30b68393d9bcc554a5798474a6af73aab6 | |
parent | b728b8fbcd7d6fe501f33f41ffbaac45e6771909 (diff) |
SpeechRecognition: Add method for listing the supported plugins
- Add QSpeechRecognition::availablePlugins()
- Rename providerName to pluginName in createEngine() parameters
Change-Id: I3f5af256dc5d104f0b101d53dafae765cfe33bf4
Reviewed-by: Andrew Knight <andrew.knight@intopalo.com>
-rw-r--r-- | examples/speech/qmlspeech/main.qml | 1 | ||||
-rwxr-xr-x | src/asr/qspeechrecognition.cpp | 18 | ||||
-rw-r--r-- | src/asr/qspeechrecognition.h | 7 | ||||
-rwxr-xr-x | src/asr/qspeechrecognitionmanager.cpp | 13 | ||||
-rwxr-xr-x | src/asr/qspeechrecognitionmanager_p.h | 4 | ||||
-rwxr-xr-x | src/asr/qspeechrecognitionpluginloader.cpp | 5 | ||||
-rwxr-xr-x | src/asr/qspeechrecognitionpluginloader_p.h | 1 |
7 files changed, 40 insertions, 9 deletions
diff --git a/examples/speech/qmlspeech/main.qml b/examples/speech/qmlspeech/main.qml index 6e9ef2d..45a5af3 100644 --- a/examples/speech/qmlspeech/main.qml +++ b/examples/speech/qmlspeech/main.qml @@ -61,6 +61,7 @@ ApplicationWindow { property var yesNoGrammar: createGrammar(engine, "yesno", yesNoGrammarFile) Component.onCompleted: { + console.log("Available plugins: " + availablePlugins) } onResult: { diff --git a/src/asr/qspeechrecognition.cpp b/src/asr/qspeechrecognition.cpp index 2d3a53d..9292ec9 100755 --- a/src/asr/qspeechrecognition.cpp +++ b/src/asr/qspeechrecognition.cpp @@ -326,7 +326,7 @@ QSpeechRecognition::State QSpeechRecognition::state() const } /*! - Creates new recognizer engine using the plug-in that matches \a providerName. + Creates new recognizer engine using the plug-in that matches \a pluginName. The engine must be given a user-defined \a name. The engine may require \a parameters, some of which may be engine-specific. Unknown parameters are silently @@ -335,8 +335,10 @@ QSpeechRecognition::State QSpeechRecognition::state() const Returns a pointer to the engine handle. QSpeechRecognition retains ownership of the returned pointer. The same pointer can be later retrieved with \l engine(). + + See availablePlugins() */ -QSpeechRecognitionEngine *QSpeechRecognition::createEngine(const QString &name, const QString &providerName, const QVariantMap ¶meters) +QSpeechRecognitionEngine *QSpeechRecognition::createEngine(const QString &name, const QString &pluginName, const QVariantMap ¶meters) { Q_D(QSpeechRecognition); if (d->m_engines.contains(name)) @@ -345,7 +347,7 @@ QSpeechRecognitionEngine *QSpeechRecognition::createEngine(const QString &name, connect(engine, &QSpeechRecognitionEngineImpl::requestSetParameter, d->m_managerInterface, &QSpeechRecognitionManagerInterface::onSetEngineParameter); connect(engine, &QSpeechRecognitionEngineImpl::requestResetAdaptationState, d->m_managerInterface, &QSpeechRecognitionManagerInterface::onResetEngineAdaptationState); d->m_engines.insert(name, engine); - emit d->m_managerInterface->createEngine(name, providerName, parameters); + emit d->m_managerInterface->createEngine(name, pluginName, parameters); return engine; } @@ -607,6 +609,16 @@ void QSpeechRecognition::dispatchMessage(const QString &message, const QVariantM emit d->m_managerInterface->dispatchMessage(QString(), message, parameters); } +/*! + Returns the names of the supported speech recognition plug-ins. + + See createEngine() +*/ +QList<QString> QSpeechRecognition::availablePlugins() +{ + return QSpeechRecognitionManager::availablePlugins(); +} + /******************************************************************************* *******************************************************************************/ diff --git a/src/asr/qspeechrecognition.h b/src/asr/qspeechrecognition.h index f5ec515..6902dc6 100644 --- a/src/asr/qspeechrecognition.h +++ b/src/asr/qspeechrecognition.h @@ -42,6 +42,8 @@ #include "qspeechrecognitionengine.h" #include <QtCore/QObject> #include <QtCore/QUrl> +#include <QtCore/QList> +#include <QtCore/QString> #include <QtCore/QVariantMap> QT_BEGIN_NAMESPACE @@ -55,6 +57,7 @@ class QSPEECHRECOGNITION_EXPORT QSpeechRecognition : public QObject Q_PROPERTY(State state READ state NOTIFY stateChanged) Q_PROPERTY(bool muted READ isMuted WRITE setMuted NOTIFY muteChanged) Q_PROPERTY(QSpeechRecognitionGrammar *activeGrammar READ activeGrammar WRITE setActiveGrammar) + Q_PROPERTY(QList<QString> availablePlugins READ availablePlugins) public: enum Error { @@ -84,7 +87,7 @@ public: QSpeechRecognition(QObject *parent = 0); ~QSpeechRecognition(); State state() const; - Q_INVOKABLE QSpeechRecognitionEngine *createEngine(const QString &name, const QString &providerName, const QVariantMap ¶meters = QVariantMap()); + Q_INVOKABLE QSpeechRecognitionEngine *createEngine(const QString &name, const QString &pluginName, const QVariantMap ¶meters = QVariantMap()); Q_INVOKABLE QSpeechRecognitionEngine *engine(const QString &name) const; Q_INVOKABLE QSpeechRecognitionGrammar *createGrammar(QSpeechRecognitionEngine *engine, const QString &name, const QUrl &location); Q_INVOKABLE QSpeechRecognitionGrammar *grammar(const QString &name) const; @@ -100,6 +103,8 @@ public: Q_INVOKABLE void reset(); Q_INVOKABLE void dispatchMessage(const QString &message, const QVariantMap ¶meters = QVariantMap()); + static QList<QString> availablePlugins(); + // Common attribute keys: static const QString AudioLevel; diff --git a/src/asr/qspeechrecognitionmanager.cpp b/src/asr/qspeechrecognitionmanager.cpp index 687bafe..42fa932 100755 --- a/src/asr/qspeechrecognitionmanager.cpp +++ b/src/asr/qspeechrecognitionmanager.cpp @@ -79,6 +79,11 @@ QSpeechRecognitionManager::AttributeData QSpeechRecognitionManager::getAttribute return m_attributes.value(key, AttributeData()); } +QList<QString> QSpeechRecognitionManager::availablePlugins() +{ + return QSpeechRecognitionPluginLoader::availableProviders(); +} + void QSpeechRecognitionManager::init() { } @@ -100,7 +105,7 @@ void QSpeechRecognitionManager::setSession(int session) } } -void QSpeechRecognitionManager::createEngine(const QString &engineName, const QString &provider, const QVariantMap ¶meters) +void QSpeechRecognitionManager::createEngine(const QString &engineName, const QString &pluginName, const QVariantMap ¶meters) { QVariantMap errorParams; errorParams.insert(QSpeechRecognition::Engine, engineName); @@ -108,9 +113,9 @@ void QSpeechRecognitionManager::createEngine(const QString &engineName, const QS return; if (!m_engines.contains(engineName)) { QSpeechRecognitionPluginEngine *engine = 0; - QSpeechRecognitionPluginLoader *engineLoader = m_engineLoaders.value(provider, 0); + QSpeechRecognitionPluginLoader *engineLoader = m_engineLoaders.value(pluginName, 0); if (!engineLoader) { - engineLoader = new QSpeechRecognitionPluginLoader(provider, this, true); + engineLoader = new QSpeechRecognitionPluginLoader(pluginName, this, true); } QString errorString; if (engineLoader && (engine = engineLoader->createEngine(engineName, parameters, &errorString)) != 0) { @@ -121,7 +126,7 @@ void QSpeechRecognitionManager::createEngine(const QString &engineName, const QS connect(engine, &QSpeechRecognitionPluginEngine::requestStop, this, &QSpeechRecognitionManager::onRequestStop, Qt::QueuedConnection); connect(engine, &QSpeechRecognitionPluginEngine::error, this, &QSpeechRecognitionManager::onError, Qt::QueuedConnection); m_engines.insert(engineName, engine); - m_engineLoaders.insert(provider, engineLoader); + m_engineLoaders.insert(pluginName, engineLoader); const QVariantMap &engineParams = engine->parameters(); // Set initial values of all the engine parameters for (QVariantMap::const_iterator param = engineParams.begin(); param != engineParams.end(); ++param) diff --git a/src/asr/qspeechrecognitionmanager_p.h b/src/asr/qspeechrecognitionmanager_p.h index 86b2b7c..6479987 100755 --- a/src/asr/qspeechrecognitionmanager_p.h +++ b/src/asr/qspeechrecognitionmanager_p.h @@ -42,6 +42,7 @@ #include <QtCore/QObject> #include <QtCore/QString> +#include <QtCore/QList> #include <QtCore/QMap> #include <QtCore/QVariantMap> #include <QtCore/QSet> @@ -70,6 +71,7 @@ public: explicit QSpeechRecognitionManager(); ~QSpeechRecognitionManager(); AttributeData getAttribute(const QString &key); + static QList<QString> availablePlugins(); signals: void engineCreated(const QString &engineName); @@ -87,7 +89,7 @@ signals: public slots: void init(); void setSession(int session); - void createEngine(const QString &engineName, const QString &provider, const QVariantMap ¶meters); + void createEngine(const QString &engineName, const QString &pluginName, const QVariantMap ¶meters); void createGrammar(const QString &engineName, const QString &grammarName, const QUrl &location); void deleteGrammar(const QString &grammarName); void setGrammar(const QString &grammarName); diff --git a/src/asr/qspeechrecognitionpluginloader.cpp b/src/asr/qspeechrecognitionpluginloader.cpp index a354365..d306acc 100755 --- a/src/asr/qspeechrecognitionpluginloader.cpp +++ b/src/asr/qspeechrecognitionpluginloader.cpp @@ -81,6 +81,11 @@ QSpeechRecognitionPluginLoader::~QSpeechRecognitionPluginLoader() { } +QList<QString> QSpeechRecognitionPluginLoader::availableProviders() +{ + return plugins().keys(); +} + void QSpeechRecognitionPluginLoader::loadMeta(const QString &providerName) { m_plugin = 0; diff --git a/src/asr/qspeechrecognitionpluginloader_p.h b/src/asr/qspeechrecognitionpluginloader_p.h index 29e9758..ee024c7 100755 --- a/src/asr/qspeechrecognitionpluginloader_p.h +++ b/src/asr/qspeechrecognitionpluginloader_p.h @@ -56,6 +56,7 @@ public: QSpeechRecognitionPluginLoader(const QString &provider, QObject *parent = 0, bool allowExperimental = false); ~QSpeechRecognitionPluginLoader(); QSpeechRecognitionPluginEngine *createEngine(const QString &name, const QVariantMap ¶meters, QString *errorString); + static QList<QString> availableProviders(); private: static QMutex m_mutex; |