[Amis-vcs] SF.net SVN: amis: [2447] branches/amis3/AmisGuiMFC2
Brought to you by:
julienq,
marisademeglio
From: <dan...@us...> - 2008-03-19 11:38:41
|
Revision: 2447 http://amis.svn.sourceforge.net/amis/?rev=2447&view=rev Author: daniel_weck Date: 2008-03-19 04:38:47 -0700 (Wed, 19 Mar 2008) Log Message: ----------- added automatic support for talking numerics (0..9) as real audio from XML rather than as text with TTS Modified Paths: -------------- branches/amis3/AmisGuiMFC2/include/gui/self-voicing/AudioSequence.h branches/amis3/AmisGuiMFC2/src/gui/self-voicing/AudioSequence.cpp Modified: branches/amis3/AmisGuiMFC2/include/gui/self-voicing/AudioSequence.h =================================================================== --- branches/amis3/AmisGuiMFC2/include/gui/self-voicing/AudioSequence.h 2008-03-19 11:16:59 UTC (rev 2446) +++ branches/amis3/AmisGuiMFC2/include/gui/self-voicing/AudioSequence.h 2008-03-19 11:38:47 UTC (rev 2447) @@ -36,6 +36,8 @@ AudioSequence* clone(); CAtlList<AudioSequenceComponent*> m_AudioSequence; private: + + void append_prepend(CString strTTS, bool prepend) ; }; Modified: branches/amis3/AmisGuiMFC2/src/gui/self-voicing/AudioSequence.cpp =================================================================== --- branches/amis3/AmisGuiMFC2/src/gui/self-voicing/AudioSequence.cpp 2008-03-19 11:16:59 UTC (rev 2446) +++ branches/amis3/AmisGuiMFC2/src/gui/self-voicing/AudioSequence.cpp 2008-03-19 11:38:47 UTC (rev 2447) @@ -1,4 +1,5 @@ #include "gui/self-voicing/AudioSequence.h" +#include "gui/self-voicing/datamodel/DataTree.h" using namespace amis::gui::spoken; @@ -28,15 +29,71 @@ void AudioSequence::AddTail(AudioSequenceComponent* comp) { m_AudioSequence.AddTail(comp); } -void AudioSequence::append(CString strTTS) { + +void AudioSequence::append(CString strTTS) +{ + append_prepend(strTTS, false); +} + +void AudioSequence::append_prepend(CString strTTS, bool prepend) { if (strTTS.IsEmpty()) { return; } + + string strPrompt = ""; + if (strTTS.Compare(L"1") == 0) { + strPrompt = "numeric_one"; + } else if (strTTS.Compare(L"2") == 0) { + strPrompt = "numeric_two"; + } else if (strTTS.Compare(L"3") == 0) { + strPrompt = "numeric_three"; + } else if (strTTS.Compare(L"4") == 0) { + strPrompt = "numeric_four"; + } else if (strTTS.Compare(L"5") == 0) { + strPrompt = "numeric_five"; + } else if (strTTS.Compare(L"6") == 0) { + strPrompt = "numeric_six"; + } else if (strTTS.Compare(L"7") == 0) { + strPrompt = "numeric_seven"; + } else if (strTTS.Compare(L"8") == 0) { + strPrompt = "numeric_eight"; + } else if (strTTS.Compare(L"9") == 0) { + strPrompt = "numeric_nine"; + } else if (strTTS.Compare(L"0") == 0) { + strPrompt = "numeric_zero"; + } + if (strPrompt.length() != 0) { + PromptItem* pi = DataTree::Instance()->findPromptItem(strPrompt); + + if (pi != NULL) + { + + TextAudioPair* pair = pi->getContents(); + if (pair != NULL) { + amis::AudioNode* audio = pair->getAudio(); + TextNodeSV * textN = pair->getText(); + + if (audio != NULL && audio->getSrc().length() != 0) + { + //seq->append(audio->clone(), (textN != NULL ? textN->getTextString().c_str() : L"")); + + AudioSequenceComponent* comp = new AudioSequenceComponent; + comp->m_isAudioClip = true; + comp->m_AudioClip = audio->clone(); + comp->m_String = strTTS; + m_AudioSequence.AddHead(comp); + return; + } + } + } + } + AudioSequenceComponent* comp = new AudioSequenceComponent; comp->m_isAudioClip = false; comp->m_AudioClip = 0; comp->m_String = strTTS; - m_AudioSequence.AddHead(comp); + if (prepend) m_AudioSequence.AddTail(comp); else m_AudioSequence.AddHead(comp); + } void AudioSequence::appendAll(AudioSequence * seq) @@ -48,14 +105,8 @@ } void AudioSequence::prepend(CString strTTS) { - if (strTTS.IsEmpty()) { - return; - } - AudioSequenceComponent* comp = new AudioSequenceComponent; - comp->m_isAudioClip = false; - comp->m_AudioClip = 0; - comp->m_String = strTTS; - m_AudioSequence.AddTail(comp); + + append_prepend(strTTS, true); } void AudioSequence::append(amis::AudioNode* audioClip, CString strTTS) { if (audioClip->getSrc().length() == 0) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |