--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/srsf/sisrscontrollerplugin/src/sindetraining.h Thu Dec 17 08:46:30 2009 +0200
@@ -0,0 +1,240 @@
+/*
+* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: Class which takes care of SINDE voice tag training.
+*
+*/
+
+
+#ifndef SINDETRAINING_H
+#define SINDETRAINING_H
+
+// ============================================================================
+// Uncomment the following directive for Bit Exact Testing.
+// ============================================================================
+//
+
+// INCLUDES
+#include "srsfbldvariant.hrh"
+#include "sicontrollerplugininterface.h"
+#include "sicontrollerplugin.h"
+#include <e32base.h>
+#include <bamdesca.h>
+#include <nsssispeechrecognitiondatacommon.h>
+#include <nssdevasr.h>
+
+// FORWARD DECLARATIONS
+
+
+// CLASS DECLARATION
+
+/**
+* Class which takes care of SIND with Extensions training.
+* Training is done in several batches to get optimal
+* number of pronunciations for each type of word.
+*
+* @lib nsssicontrollerplugin.lib
+* @since 3.1
+*/
+class CSindeTrainer : public CActive
+ {
+ public: // Constructors and destructor
+
+ /**
+ * Two-phased constructor.
+ *
+ * @param aDevAsr DevASR reference
+ * @param aControllerIf Controller Interface to send callbacks to client
+ * @param aPlugin Plugin reference
+ * @param aDatabase SI Database
+ * @param aGrammarDatabase Grammar Database
+ * @param aLexiconDatabase Lexicon Database
+ */
+ static CSindeTrainer* NewL( CDevASR& aDevAsr,
+ CSIControllerPluginInterface& aControllerIf,
+ CSIControllerPlugin& aPlugin,
+ CSIDatabase& aDatabase,
+ CSIGrammarDB& aGrammarDatabase,
+ CSILexiconDB& aLexiconDatabase );
+
+ /**
+ * Destructor.
+ */
+ virtual ~CSindeTrainer();
+
+ public: // New functions
+
+ /**
+ * Starts the process of SINDE voice tag addition.
+ * Client thread is called is signalled directly when training completes.
+ *
+ * @param aTrainArrays Training texts
+ * @param aLanguageArray Languages which are used when training
+ * @param aLexiconId Lexicon ID where to add new pronunciations
+ * @param aGrammarId Grammar ID where to add new rules
+ * @param aModelBankId Model bank ID which is used in training process
+ * @param aClientUid UID of the client which is doing the update (to verify ownership)
+ * @param aRuleIds Output parameter, will contain the list IDs of the added rules
+ */
+ void AddSindeVoiceTagsL( RPointerArray<MDesCArray>* aTrainArrays,
+ RArray<RLanguageArray>& aLanguageArray,
+ TSILexiconID aLexiconId,
+ TSIGrammarID aGrammarId,
+ TSIModelBankID aModelBankId,
+ TUid aClientUid,
+ RArray<TSIRuleID>& aRuleIds );
+
+
+ /**
+ * Handles an event originating from DevASR.
+ *
+ * @param aEvent Event code
+ * @param aError Error code
+ */
+ void HandleEvent( TDevASREvent aEvent, TDevASRError aError );
+
+ protected: // From CActive
+
+ /**
+ * RunL from CActive class.
+ */
+ void RunL();
+
+ /**
+ * Cancel handle from CActive class.
+ */
+ void DoCancel();
+
+ private:
+
+ /**
+ * C++ default constructor.
+ *
+ * @param aDevAsr DevASR reference
+ * @param aControllerIf Controller Interface to send callbacks to client
+ * @param aPlugin Plugin reference
+ * @param aDatabase SI Database
+ * @param aGrammarDatabase Grammar Database
+ * @param aLexiconDatabase Lexicon Database
+ */
+ CSindeTrainer( CDevASR& aDevAsr,
+ CSIControllerPluginInterface& aControllerIf,
+ CSIControllerPlugin& aPlugin,
+ CSIDatabase& aDatabase,
+ CSIGrammarDB& aGrammarDatabase,
+ CSILexiconDB& aLexiconDatabase );
+
+ /**
+ * By default Symbian 2nd phase constructor is private.
+ */
+ void ConstructL();
+
+ /**
+ * Sets the active object as active and ready to run.
+ */
+ void SetReady();
+
+ /**
+ * Does one step of training.
+ */
+ void DoOneTrainingStepL();
+
+ /**
+ * Does the updates to lexicon and grammar database.
+ */
+ void DoDatabaseUpdateL();
+
+ /**
+ * Does the grammar compilation using DevASR.
+ */
+ void DoGrammarCompilationL();
+
+ /**
+ * Saves compiled grammar into database.
+ */
+ void StoreCompiledGrammar();
+
+ /**
+ * Utility function to add pronunciations from other batches than first one
+ * to lexicon and grammar.
+ *
+ * @param aIndex Index within TTP word lists
+ * @param aLexicon Lexicon where additions are done
+ * @param aPronunIds Pronunciation id array where new ids are appended
+ */
+ void AppendPronunciationsL( TInt aIndex,
+ CSILexicon& aLexicon,
+ RArray<TSIPronunciationID>& aPronunIds );
+
+ private: // Data
+
+ // States for this object
+ enum TSindeTrainerState
+ {
+ ESindeTrainerIdle,
+ ESindeTrainerTraining,
+ ESindeTrainerDbUpdate,
+ ESindeGrammarCompilation,
+ ESindeTrainerFinished
+ };
+
+ // Current object state
+ TSindeTrainerState iState;
+
+ // Input for TTP via DevASR
+ CSITtpWordList* iTtpWordList;
+
+ // Position of language array processing
+ TInt iLanguageIndex;
+
+ // Position of text array processing
+ TInt iTextIndex;
+
+ // Stored parameters
+ RPointerArray<MDesCArray>* iTrainArrays;
+ RArray<RLanguageArray>* iLanguageArray;
+ RArray<TSIRuleID>* iRuleIds;
+ TSIGrammarID iGrammarId;
+ TSILexiconID iLexiconId;
+ TSIModelBankID iModelBankId;
+ CSICompiledGrammar* iCompiledGrammar;
+
+ // Reference to DevASR module
+ CDevASR& iDevAsr;
+
+ RArray<TUint32> iMaxPronunsForWord;
+
+ // Array which contains collected set of TTP data structures
+ RPointerArray<CSITtpWordList> iTtpDataArray;
+
+ // Asynchronous processing result, will be sent within callback
+ TInt iError;
+
+ // To do callbacks to client side
+ CSIControllerPluginInterface& iControllerIf;
+
+ // Controller plugin
+ CSIControllerPlugin& iPlugin;
+
+ // Plugin database classes
+ CSIDatabase& iDatabase;
+ CSIGrammarDB& iGrammarDatabase;
+ CSILexiconDB& iLexiconDatabase;
+
+ // UID of the client
+ TUid iClientUid;
+ };
+
+#endif // SINDETRAINING_H
+
+// End of File