diff -r cad71a31b7fc -r e36f3802f733 speechsrv_plat/nss_tts_common_api/inc/nssttscommon.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/speechsrv_plat/nss_tts_common_api/inc/nssttscommon.h Wed Sep 01 12:29:17 2010 +0100 @@ -0,0 +1,437 @@ +/* +* Copyright (c) 2004-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: Data type defininitions for TTS +* %version: 13 % +* +* Copyright © 2004-2006 Nokia Corporation. +*/ + + + + + +#ifndef TTSCOMMON_H +#define TTSCOMMON_H + +// INCLUDES +#include +#include + +// CONSTANTS +// Undefined synthesizing language. The default language of TTS processor will be used. +const TLanguage KTtsUndefinedLanguage( ELangOther ); + +// Undefined duration of segment. The duration will be defined using other properties. +const TInt32 KTtsUndefinedDuration( -1 ); + +// Undefined rate +const TInt KTtsRateUndefined( -1 ); + +// Default volume, which is maximum volume (100%). +const TInt KTtsDefaultVolume( 100 ); + +// Max length of voice name +const TInt KVoiceNameMaxLength( 50 ); + +// Maximum speaking rate +const TInt KTtsMaxSpeakingRate( 100 ); + +// +_LIT( KDefaultVoiceNameMale, "DefaultMale" ); +_LIT( KDefaultVoiceNameFemale, "DefaultFemale" ); + +// DATA TYPES + +// Style identifier +typedef TUint32 TTtsStyleID; + +// Voice identifier +typedef TBuf TTtsVoice; + +// Preferred quality of TTS output +enum TTtsQuality + { + ETtsQualityLowOnly, // Low quality + ETtsQualityHighOnly, // High quality + ETtsQualityHighPreferred, // High quality preferred, low quality fall back can be used + ETtsQualityLowPreferred, // Low quality preferred + ETtsQualityUndefined // Default quality will be used + }; + +// Custom command ids for CTtsUtility::CustomCommand(As|S)ync() +enum TTtsCustomCommandId + { + ETtsCustomCommandSetAudioOutput = 0, // For setting audio output routing + ETtsCustomCommandSetPluginParameter = 1, // For setting plugin parameter + }; + +// FORWARD DECLARATIONS +class CTtsParsedTextBody; + +// CLASS DECLARATION + +/** +* Class to encapsulate speaking style +* +* @lib nssttscommon.lib +* @since 2.8 +*/ +class TTtsStyle + { + public: // Constructor and destructor + + /** + * C++ default constructor. + */ + IMPORT_C TTtsStyle(); + + public: // Data + + // Synthesizing language + TLanguage iLanguage; + + // Voice identifier + TTtsVoice iVoice; + + // Speaking rate in words-per-minute. See TTtsRate. + TInt iRate; + + // Volume scale in percentages. The range is 0..100. + // Zero means silent and 100 maximum volume. + TInt iVolume; + + // Sampling rate + TInt iSamplingRate; + + // TTS quality (preferred or exclusive) + TTtsQuality iQuality; + + // Desired time to take to read the segment in microseconds + TTimeIntervalMicroSeconds32 iDuration; + + // Natural languagege processing on/off + TBool iNlp; + + }; + +/** +* Class to store segment information +* +* @lib nssttscommon.lib +* @since 2.8 +*/ +class TTtsSegment + { + public: // Constructors and destructor + + /** + * C++ default constructor. + * @since 2.8 + * @param aStyleID Indentifier of style. + * @param aText Text for segment + * @param aPhonemeSequence Corresponding phoneme sequence for text + * @param aTrailingSilenceDuration The duration of trailing silence. + */ + IMPORT_C TTtsSegment( const TTtsStyleID aStyleID, + const TDesC& aText = KNullDesC, + const TDesC8& aPhonemeSequence = KNullDesC8, + const TTimeIntervalMicroSeconds32& aTrailingSilenceDuration = KTtsUndefinedDuration ); + + public: // New functions + + /** + * Sets duration of trailing silence. + * @since 2.8 + * @param aDuration Duration of silence. + * @return None + */ + IMPORT_C void SetTrailingSilenceL( const TTimeIntervalMicroSeconds32& aDuration ); + + /** + * Sets phoneme sequence pointer. The phoneme sequence cannot be deleted + * during the life time of this object. + * @since 2.8 + * @param aPhonemeSequence Phoneme sequence. + * @return None + */ + IMPORT_C void SetPhonemeSequencePtr( const TDesC8& aPhonemeSequence ); + + /** + * Returns phoneme sequence pointer of the segment. + * @since 2.8 + * @param None + * @return Pointer to phoneme sequence + */ + IMPORT_C const TDesC8& PhonemeSequencePtr() const; + + /** + * Sets text pointer. The text cannot be deleted + * during the life time of this object. + * @since 2.8 + * @param aText Text. + * @return None + */ + IMPORT_C void SetTextPtr( const TDesC& aText ); + + /** + * Returns text pointer of the segment. + * @since 2.8 + * @param None + * @return Pointer to text. + */ + IMPORT_C const TDesC& TextPtr() const; + + /** + * Gets duration of trailing silence. + * @since 2.8 + * @param None + * @return Duration of silence. + */ + IMPORT_C const TTimeIntervalMicroSeconds32& TrailingSilence() const; + + /** + * Sets style for segment. The style cannot be deleted + * during this object life time. + * @since 2.8 + * @param aStyleID The identifier of the style. + * @return None + */ + IMPORT_C void SetStyleID( TTtsStyleID aStyleID ); + + /** + * Returns identifier of used style. + * @since 2.8 + * @param None + * @return Identifier of style. + */ + IMPORT_C TTtsStyleID StyleID() const; + + /** + * Sets style object for segment. + * + * @since 3.1 + * @param aStyle Style reference. + */ + IMPORT_C void SetStyle( TTtsStyle& aStyle ); + + /** + * Returns style object. + * + * @since 3.1 + * @return Reference to style. + */ + IMPORT_C TTtsStyle& StyleL(); + + /** + * Resets previously set style and segment will use the style ID. + * + * @since 3.1 + */ + IMPORT_C void ResetStyle(); + + private: // Data + + // Style identifier for segment + TTtsStyleID iStyleID; + + // Pointer to text associated for segment + TPtrC iText; + + // Pointer to phoneme sequence associated for segment + TPtrC8 iPhonemeSequence; + + // Duration of trailing silence + TTimeIntervalMicroSeconds32 iTrailingSilenceDuration; + + // Style assigned directly to segment + TTtsStyle iStyle; + + // On if style is directly assigned to the segment + TBool iIncludesStyle; + }; + +/** +* Class to define functions for TTS segment stream. +* Using the class, a client can implement similar classes to CParsedText. +* +* @lib nssttscommon.lib +* @since 2.8 +*/ +class MTtsSegmentStream + { + public: // New functions + + /** + * Returns used phoneme notation of the stream. + * @since 2.8 + * @return Descriptor of used phoneme notation. + */ + virtual TDesC& MTtsPhonemeNotation() = 0; + + /** + * Returns the next segment in the stream. + * @since 2.8 + * @param aSegment The requested segment. + * @return System wide error code. KErrNone if success. + * KErrUnderflow if there is no available segment. + */ + virtual TInt MTtsReceiveSegment( TTtsSegment& aSegment ) = 0; + + /** + * Notifies that the segment has been processed and it can be released. + * @since 2.8 + * @param aSegment The processed segment. + */ + virtual void MTtsSegmentDone( TTtsSegment& aSegment ) = 0; + + }; + +/** +* Class to store parsed text for TTS. +* +* @lib nssttscommon.lib +* @since 2.8 +*/ +class CTtsParsedText : public CBase + { + public: // Constructors and destructor + + /** + * Two-phased constructor. + * @since 2.8 + * @param aText Text to be parsed. + * @param aPhonemeSequence Corresponding phoneme sequence. + * If the sequence is not given, it will be determined automatically. + * @param aPhonemeNotation Identifier of phoneme notation. + * If the descriptor is empty, the TTS engine will use default notation. + * @return Created instance of CTtsParsedText + */ + IMPORT_C static CTtsParsedText* NewL( const TDesC& aText = KNullDesC, + const TDesC8& aPhonemeSequence = KNullDesC8, + const TDesC& aPhonemeNotation = KNullDesC ); + + /** + * Destructor. + */ + IMPORT_C virtual ~CTtsParsedText(); + + public: // New functions + + /** + * Adds new segment and takes its ownership. + * @since 2.8 + * @param aSegment A new segment. + * @param aIndex Index where to add segment. If index is equal or larger + * than NumberOfSegments(), the segment will be added into end. + */ + IMPORT_C void AddSegmentL( const TTtsSegment& aSegment, TInt aIndex = KMaxTInt ); + + /** + * Deletes a segment + * @since 2.8 + * @param aIndex The index of segment to be deleted. The index must be 0..NumberOfSegments()-1. + */ + IMPORT_C void DeleteSegmentL( TInt aIndex ); + + /** + * Checks that the internal structure is valid. + * @since 2.8 + * @return ETrue if valid and EFalse if invalid. + */ + IMPORT_C TBool IsValid() const; + + /** + * Returns the number of segments. + * @since 2.8 + * @return The number of segments + */ + IMPORT_C TInt NumberOfSegments() const; + + /** + * Returns phoneme notation definition. + * @since 2.8 + * @return Notation descriptor. KNullDesC8 if none. + */ + IMPORT_C const TDesC& PhonemeNotation() const; + + /** + * Returns phoneme sequence. + * @since 2.8 + * @return Phoneme sequence. KNullDesC8 if none. + */ + IMPORT_C const TDesC8& PhonemeSequence() const; + + /** + * Returns segment from given index + * @since 2.8 + * @param aIndex The index of segment to be returned. The index must be 0..NumberOfSegments()-1. + * @return Requested segment. + */ + IMPORT_C const TTtsSegment& SegmentL( TInt aIndex ) const; + + /** + * Sets a phoneme notation. The descriptor is copied and can be released after the function call. + * @since 2.8 + * @param aPhonemeNotation Phoneme notation. + */ + IMPORT_C void SetPhonemeNotationL( const TDesC& aPhonemeNotation ); + + /** + * Sets a phoneme sequence. The descriptor is copied and can be released after the function call. + * @since 2.8 + * @param aPhonemeSequence Phoneme sequence. + */ + IMPORT_C void SetPhonemeSequenceL( const TDesC8& aPhonemeSequence ); + + /** + * Sets a text. The descriptor is copied and can be released after the function call. + * @since 2.8 + * @param aText Text. + */ + IMPORT_C void SetTextL( const TDesC& aText ); + + /** + * Returns text. + * @since 2.8 + * @return Text. KNullDesC8 if none. + */ + IMPORT_C const TDesC& Text() const; + + private: + + /** + * C++ default constructor. + */ + CTtsParsedText(); + + /** + * By default Symbian 2nd phase constructor is private. + */ + void ConstructL( const TDesC& aText, + const TDesC8& aPhonemeSequence, + const TDesC& aPhonemeNotation ); + + + private: // Data + + // Implementation for the class + CTtsParsedTextBody* iBody; + + // Reserved pointer for future extension + TAny* iReserved; + + }; +#endif // TTSCOMMON_H + +// End of File