Skip to content
Snippets Groups Projects
Commit 2a8ffa53 authored by Mirko Wächter's avatar Mirko Wächter
Browse files

SpeechObserver observers now also all recognized text

parent 0829a7ec
No related branches found
No related tags found
No related merge requests found
/*
* This file is part of ArmarX.
*
*
* Copyright (C) 2012-2016, High Performance Humanoid Technologies (H2T),
* Karlsruhe Institute of Technology (KIT), all rights reserved.
*
......@@ -23,6 +23,8 @@
#include "SpeechObserver.h"
#include <ArmarXCore/util/json/JSONObject.h>
using namespace armarx;
SpeechObserver::SpeechObserver()
......@@ -33,6 +35,9 @@ void SpeechObserver::onInitObserver()
{
usingTopic(getProperty<std::string>("TextToSpeechTopicName").getValue());
usingTopic(getProperty<std::string>("TextToSpeechStateTopicName").getValue());
auto proxy = getObjectAdapter()->addWithUUID(new SpeechListenerImpl(this));
getIceManager()->subscribeTopic(proxy, "Speech_Commands");
}
void SpeechObserver::onConnectObserver()
......@@ -42,12 +47,16 @@ void SpeechObserver::onConnectObserver()
offerDataFieldWithDefault("TextToSpeech", "TextChangeCounter", Variant(reportTextCounter), "Counter for text updates");
offerDataFieldWithDefault("TextToSpeech", "State", Variant(""), "Current TTS state");
offerDataFieldWithDefault("TextToSpeech", "StateChangeCounter", Variant(reportStateCounter), "Counter for text updates");
offerDataFieldWithDefault("TextToSpeech", "StateChangeCounter", Variant(reportStateCounter), "Counter for state updates");
offerChannel("SpeechToText", "SpeechToText channel");
offerDataFieldWithDefault("TextToSpeech", "RecognizedText", Variant(std::string()), "Text recognized by the SpeechRecogntion");
}
std::string SpeechObserver::SpeechStateToString(TextToSpeechStateType state)
{
switch(state)
switch (state)
{
case eIdle:
return "Idle";
......@@ -70,7 +79,7 @@ void SpeechObserver::reportState(TextToSpeechStateType state, const Ice::Current
updateChannel("TextToSpeech");
}
void SpeechObserver::reportText(const std::string& text, const Ice::Current&)
void SpeechObserver::reportText(const std::string& text, const Ice::Current& c)
{
ScopedLock lock(dataMutex);
reportTextCounter++;
......@@ -84,3 +93,24 @@ void SpeechObserver::reportTextWithParams(const std::string& text, const Ice::St
ScopedLock lock(dataMutex);
ARMARX_WARNING << "reportTextWithParams is not implemented";
}
SpeechListenerImpl::SpeechListenerImpl(SpeechObserver* obs) :
obs(obs)
{
}
void armarx::SpeechListenerImpl::reportText(const std::string& text, const Ice::Current&)
{
ScopedLock lock(dataMutex);
JSONObject json;
json.fromString(text);
obs->setDataField("SpeechToText", "RecognizedText", Variant(json.getString("text")));
}
void armarx::SpeechListenerImpl::reportTextWithParams(const std::string&, const Ice::StringSeq&, const Ice::Current&)
{
ScopedLock lock(dataMutex);
ARMARX_WARNING << deactivateSpam(100) << "reportTextWithParams is not implemented";
}
/*
* This file is part of ArmarX.
*
*
* Copyright (C) 2012-2016, High Performance Humanoid Technologies (H2T),
* Karlsruhe Institute of Technology (KIT), all rights reserved.
*
......@@ -39,11 +39,25 @@ namespace armarx
defineOptionalProperty<std::string>("TextToSpeechStateTopicName", "TextToSpeechState", "Name of the TextToSpeechStateTopic");
}
};
class SpeechObserver;
class SpeechListenerImpl : public TextListenerInterface
{
public:
SpeechListenerImpl(SpeechObserver* obs);
protected:
SpeechObserver* obs;
Mutex dataMutex;
// TextListenerInterface interface
public:
void reportText(const std::string&, const Ice::Current&) override;
void reportTextWithParams(const std::string&, const Ice::StringSeq&, const Ice::Current&) override;
};
class SpeechObserver :
virtual public Observer,
virtual public SpeechObserverInterface
virtual public Observer,
virtual public SpeechObserverInterface
{
friend class SpeechListenerImpl;
public:
SpeechObserver();
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment