diff -r cad71a31b7fc -r e36f3802f733 speechsrv_plat/nss_devtts_api/inc/nssdevtts.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/speechsrv_plat/nss_devtts_api/inc/nssdevtts.h Wed Sep 01 12:29:17 2010 +0100 @@ -0,0 +1,487 @@ +/* +* Copyright (c) 2004 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: DevTTS interface for Text-to-Speech +* +*/ + + +#ifndef DEVTTS_H +#define DEVTTS_H + +// INCLUDES +#include +#include +// TTSCommon include +#include + +// CONSTANTS +const TInt KDevTTSBalanceRight = 100; +const TInt KDevTTSBalanceRightMiddle = 50; +const TInt KDevTTSBalanceMiddle = 0; +const TInt KDevTTSBalanceLeftMiddle = -50; +const TInt KDevTTSBalanceLeft = -100; + +// DATA TYPES +enum TDevTTSEvent + { + EDevTTSEventComplete + }; + +enum TDevTTSOutputMode + { + EDevTTSSoundDeviceMode = 0, + EDevTTSClientMode + }; + +enum TDevTTSAudioPreference + { + EDevTTSPriorityPreferenceNone = 0, + EDevTTSPriorityPreferenceTime, + EDevTTSPriorityPreferenceQuality, + EDevTTSPriorityPreferenceTimeAndQuality + }; + +// FORWARD DECLARATIONS +class CTTSAlgorithmManager; + +// CLASS DECLARATIONS + +/** +* MDevTTSObserver +* +* Interface for a set of DevTTS callback functions. +* +* This mixin class is intended to be inherited by the DevTTS client. Functions +* of this class get called when DevTTS specific events occur. +* +* @lib nssdevtts.lib +* @since 2.8 +*/ +class MDevTTSObserver + { + + public: // New functions + + /** + * Invoked by DevTTS when it needs a configuration data package. + * + * @since 2.8 + * @param "TUint32 aPackageType" Packege type identifier + * @param "TUint32 aPackageID" Package identifier + * @param "TUint32 aStartPosition" Start position in bytes from beginning of data + * @param "TUint32 aEndPosition" End index in bytes. If the position is bigger + * than the size of data package, the end part will be returned. + * + * @return Pointer to created data buffer. NULL if failure. User must + * take care of the buffer deletion after usage. + */ + virtual HBufC8* MdtoConfigurationData( TUint32 aPackageType, + TUint32 aPackageID, + TUint32 aStartPosition, + TUint32 aEndPosition ) = 0; + + /** + * Called by DevTTS when an event occured. EDevTTSEventComplete is the only + * event that can happen currently. + * + * @since 2.8 + * @param "TDevTTSEvent aEvent" + * Event code + * @param "TInt aStatus" + * Error code. KErrNone if success, one of the system level + * error codes otherwise. + */ + virtual void MdtoEvent( TDevTTSEvent aEvent, TInt aStatus ) = 0; + + /** + * Called by DevTTS device when output mode is EDevTTSClientMode and a + * new audio buffer has been filled by the synthesizer. + * + * @since 2.8 + * @param "TDesC8& aBuffer" + * Synthesized audio buffer. + */ + virtual void MdtoProcessBuffer( const TDesC8& aBuffer ) = 0; + }; + +/** +* CDevTTS is the interface towards DevTTS module. Actual implementation is +* not included in this class. +* +* @lib nssdevtts.lib +* @since 2.8 +*/ +class CDevTTS : public CBase + { + public: // Constructors and destructor + + /** + * Two-phased constructor. + */ + IMPORT_C static CDevTTS* NewL( MDevTTSObserver& aObserver/*, CConsoleBase* console*/ ); + + /** + * Destructor. + */ + IMPORT_C ~CDevTTS(); + + public: // New functions + + /** + * Adds a new style to the collection. If equal style exists already, + * new style is not added. + * Will leave if an error occurs. Likely errors are: KErrNoMemory, + * not enough memory to add new style. KErrNotSupported, the style + * is not supported. KErrArgument, the style contains an imposible + * value. + * + * @since 2.8 + * @param "TTtsStyle& aStyle" + * Reference to the style which will be added to the style + * collection. + * + * @return Identifier of added style. + */ + IMPORT_C TTtsStyleID AddStyleL( const TTtsStyle& aStyle ); + + /** + * Returns the current balance setting. + * + * @since 2.8 + * @return Balance value. + */ + IMPORT_C TInt Balance(); + + /** + * Notifies that the buffer has been processed. The + * method is used if output mode of synthesizing is + * EDevTTSClientMode. + * + * @since 2.8 + * @param "TDesC8& aBuffer" + * The buffer which has been processed. + */ + IMPORT_C void BufferProcessed( const TDesC8& aBuffer ); + + /** + * Request a pointer to the custom interface. Currently not in use. + * + * @since 2.8 + * @param "TUid aInterfaceID" + * Custom interface identifier. + * + * @return Pointer to custom interface. NULL if interface is not + * found or initiation failures. + */ + IMPORT_C TAny* CustomInterface( TUid aInterfaceID ); + + /** + * Deletes style. + * + * @since 2.8 + * @param "TTtsStyleID aStyleID" Identifier of style to be deleted. + */ + IMPORT_C void DeleteStyleL( TTtsStyleID aStyleID ); + + /** + * Gives current position of synthesizing. The method will leave if an + * error occurs. Likely errors are: KErrNotReady, no synthesizing is + * ongoing. + * + * @since 2.8 + * @param "TTimeIntervalMicroSeconds& aTime" + * Time of the synthesizing position + */ + IMPORT_C void GetPositionL( TTimeIntervalMicroSeconds& aTime ) const; + + /** + * Gives current position of synthesizing. The method will leave if an + * error occurs. Likely errors are: KErrNotReady, no synthesizing is + * ongoing. + * + * @since 2.8 + * @param "TTtsSegment& aSegment" + * Current segment which is synthesized, out parameter + * @param "TInt& aWordIndex" + * Index of the current word, starting from the begining of + * current segment + */ + IMPORT_C void GetPositionL( TTtsSegment& aSegment, TInt& aWordIndex ) const; + + /** + * Tells if language is supported by the TTS engine or not. + * + * @since 2.8 + * @param "TLanguage aLanguage" + * Language code + * + * @return ETrue if supported, EFalse otherwise + */ + IMPORT_C TBool IsLanguageSupported( TLanguage aLanguage ) const; + + /** + * Returns maximum volume value. + * + * @since 2.8 + * @return Maximum volume. + */ + IMPORT_C TInt MaxVolume(); + + /** + * Gives number of styles. + * + * @since 2.8 + * @return Number of styles. + */ + IMPORT_C TUint16 NumberOfStyles() const; + + /** + * Pauses synthesis process. + * @since 2.8 + */ + IMPORT_C void Pause(); + + /** + * Prepares for synthesis. The method will leave if an + * error occurs. Likely errors are: KErrInUse, synthesizing is + * currently ongoing. KErrNoMemory, not enough memory to start + * synthesis. KErrNotSupport, requested function is not supported. + * + * @since 2.8 + * @param "MTtsSegmentStream& aStream" + * Stream to be synthesized. + */ + IMPORT_C void PrimeSynthesisL( MTtsSegmentStream& aStream ); + + /** + * Prepares for synthesis. The method will leave if an + * error occurs. Likely errors are: KErrInUse, synthesizing is + * currently ongoing. KErrNoMemory, not enough memory to start + * synthesis. KErrNotSupport, requested function is not supported. + * + * @since 2.8 + * @param "CTtsParsedText& aText" + * Text containing multiple segments to be synthesized. + */ + IMPORT_C void PrimeSynthesisL( CTtsParsedText& aText ); + + /** + * Sets the priority for audio playback if in EDevTTSSoundDeviceMode. + * + * @since 2.8 + * @param "TInt aPriority" + * Priority value. + * @param "TDevTTSAudioPreference aPref"' + * Preference setting. Quality, time or both. + */ + IMPORT_C void SetAudioPriority( TInt aPriority, TDevTTSAudioPreference aPref ); + + /** + * Sets the audio output routing + * + * @since 3.2 + * @param "TInt aAudioOutput" + * New output. + */ + IMPORT_C void SetAudioOutputL( TInt aAudioOutput ); + + /** + * Sets the playback device balance. Affects only when DevTTS is in + * EDevTTSSoundDeviceMode. Illegal values are neglected. + * + * @since 2.8 + * @param "TInt aBalance" Balance to be set. + */ + IMPORT_C void SetBalance( TInt aBalance ); + + /** + * Sets new position for synthesizing. The method will leave if an + * error occurs. Likely errors are: KErrNotReady, no synthesizing is + * ongoing. KErrArgument, position cannot be set. + * + * @since 2.8 + * @param "TTimeIntervalMicroSeconds& aTime" + * Time of the synthesizing postion. + */ + IMPORT_C void SetPositionL( const TTimeIntervalMicroSeconds& aTime ); + + /** + * Sets new position for synthesizing. The method will leave if an + * error occurs. Likely errors are: KErrNotReady, no synthesizing is + * ongoing. KErrArgument, position cannot be set. + * + * @since 2.8 + * @param "TTtsSegment& aSegment" + * The segment being synthesized. + * @param "TInt aWordIndex" + * The index of word being synthesized. + */ + IMPORT_C void SetPositionL( const TTtsSegment& aSegment, TInt aWordIndex ); + + /** + * Sets the playback device volume. Affects only when DevTTS is in + * EDevTTSSoundDeviceMode. Range is from 0..MaxVolume(). Illegal values + * are neglected. + * + * @since 2.8 + * @param "TInt aVolume" Volume setting. + */ + IMPORT_C void SetVolume( TInt aVolume ); + + /** + * Sets the volume ramp duration. Start and end volumes must be set with + * SetVolume() function. + * + * @since 2.8 + * @param "TTimeIntervalMicroSeconds& aRampDuration" + * Ramp duration in microseconds. + */ + IMPORT_C void SetVolumeRamp( const TTimeIntervalMicroSeconds& aRampDuration ); + + /** + * Stops synthesizing and releases resources of synthesizing. + * The method does nothing if already stopped. + * @since 2.8 + */ + IMPORT_C void Stop(); + + /** + * Receives style information. The method will leave if an error + * occurs. Likely errors are: KErrNotFound, style identifier not + * found. + * + * @since 2.8 + * @param "TTtsStyle& aStyle" + * Reference to style object where to assign the requested style. + * @param "TTtsStyleID aStyleID" + * Style identifier. + */ + IMPORT_C TTtsStyle& StyleL( TTtsStyleID aStyleID ) const; + + /** + * Receives style information. The method will leave if an error + * occurs. Likely errors are: KErrArgument, index is out of bounds. + * + * @since 2.8 + * @param "TTtsStyle& aStyle" + * Reference to style object where to assign the requested style. + * @param "TUint16 aIndex" + * Index to style: 0..NumberOfStyles(). + */ + IMPORT_C TTtsStyle& StyleL( TUint16 aIndex ) const; + + /** + * Starts synthesizing the text. The method is asynchronous, as soon + * as the request has been placed, function call will return. + * MDevTTSObserver::MdtoEvent will be called when synthesizing finishes. + * The method will leave if an error occurs. Likely errors are: + * KErrNoMemory, not enough memory. + * KErrInUse, synthesizing is currently ongoing + * + * @since 2.8 + * @param "TDevTTSOutputMode aOutputMode" + * Either use a sound device (EDevTTSSoundDeviceMode) or client + * using callback (EDevTTSClientMode) + */ + IMPORT_C void SynthesizeL( TDevTTSOutputMode aOutputMode ); + + /** + * Returns current playback volume. + * + * @since 2.8 + * @return Volume setting. + */ + IMPORT_C TInt Volume(); + + /** + * Calls language identification for a given text. + * + * @since 3.0M + * @param "CTtsParsedText& aText" Text + * @param "TInt aNumberOfGuesses" Maximum number of guesses that will be provided + * @param "RArray& aLanguages" Output parameter which will contain the languages + * @param "RArray& aScores" Scores + */ + IMPORT_C void LanguageIdentificationL( CTtsParsedText& aText, + TInt aNumberOfGuesses, + RArray& aLanguages, + RArray& aScores ); + + /** + * Calls Natural Language Processing (NLP) to normalize text. + * + * @since 3.0M + * @param "CTtsParsedText& aText" Text which will be normalized + */ + IMPORT_C void NormalizeTextL( CTtsParsedText& aText ); + + /** + * Calls Natural Language Processing (NLP) to normalize and segment text. + * + * @since 3.0M + * @param "CTtsParsedText& aText" Text which will be normalized + */ + IMPORT_C void NormalizeAndSegmentTextL( CTtsParsedText& aText ); + + public: // Functions from base classes + + protected: // New functions + + protected: // Functions from base classes + + private: + + /** + * C++ default constructor. + */ + CDevTTS(); + + /** + * By default Symbian 2nd phase constructor is private. + */ + void ConstructL( MDevTTSObserver& aObserver/*, CConsoleBase* console*/ ); + + /** + * Prohibit copy constructor + */ + CDevTTS( const CDevTTS& ); + + /** + * Prohibit assignment operator + */ + CDevTTS& operator=( const CDevTTS& ); + + public: // Data + + protected: // Data + + private: // Data + + // Pointer to the implementation class + CTTSAlgorithmManager* iImpl; + + // Reserved pointer for future extension + TAny* iReserved; + + public: // Friend classes + + protected: // Friend classes + + private: // Friend classes + + }; + +#endif // DEVTTS_H + +// End of File