Please note that as of October 24, 2014, the Nokia Developer Wiki will no longer be accepting user contributions, including new entries, edits and comments, as we begin transitioning to our new home, in the Windows Phone Development Wiki. We plan to move over the majority of the existing entries. Thanks for all your past and future contributions.

Archived:NSSTTS Utility Symbian API

From Wiki
Jump to: navigation, search

Archived.pngArchived: This article is archived because it is not considered relevant for third-party developers creating commercial solutions today. If you think this article is still relevant, let us know by adding the template {{ReviewForRemovalFromArchive|user=~~~~|write your reason here}}.

Article Metadata
Platform(s): S60 3rd Edition, FP2
S60 3rd Edition FP2
Platform Security
Capabilities: ReadUserData
Keywords: CTtsUtility
Created: User:Technical writer 1 (13 Jun 2008)
Updated: User:Technical writer 1 (29 Jan 2010)
Last edited: lpvalente (04 Oct 2012)

Note.pngNote: :This API is not part of the public SDK. It can be found in the SDK API Plug-in.

The CTtsUtility class is the main interface for speech synthesis. The Text-To-Speech (TTS) utility provides methods for opening and playing text files, descriptors, URLs, etc. It also provides methods for adjusting the volume and getting metadata and a list of supported languages, voices, etc.


Header files

 #include <nssttsutility.h>
 #include <nssttsutilityobserver.h>

Link against

 LIBRARY nssttsutility.lib

Example code

1) Derive your class from MTtsClientUtilityObserver and implement all pure virtual functions.

  void MapcCustomCommandEvent( TInt aEvent, TInt aError );
void MapcInitComplete( TInt aError, const TTimeIntervalMicroSeconds& aDuration );
void MapcPlayComplete( TInt aError );

2) Initialise the TTS utility.

 CTtsUtility* iTtsUtility = CTtsUtility::NewL( *this );

3) Add the style and data to be played.

 if ( iTtsUtility->NumberOfStyles() > 0 )
// Delete style if exists
iTtsUtility->DeleteStyle( iStyleId );
if ( iParsedText->NumberOfSegments() > 0 )
// Remove existing segment from parsed text structure
iParsedText->DeleteSegmentL( 0 );
// Use high quality TTS
iStyle.iQuality = ETtsQualityHighOnly;
// Use language and speaker set in Speech application.
// Also speaking rate and volume is set according to Speech app.
iStyle.iLanguage = KTtsUndefinedLanguage;
// Add style
iStyleId = iTtsUtility->AddStyleL( iStyle );
// Initialise with current text and settings.
iTtsUtility->OpenParsedTextL( *iParsedText );
//The command to start playing

3) You can also get and set the volume for CTtsUtility.

 TInt volume;
iTtsUtility->GetVolume( volume );
iTtsUtility->SetVolume( volume );

4) Stop playing the text:


Supported languages and voices

The following code sample demonstrates how to retrieve the names of languages and voices supported by the TTS engine.

 #include <ptiengine.h>              // link against ptiengine.lib

CPtiEngine is used for retrieving the name of supported language (for instance, for display purposes).


  CPtiEngine* ptiEngine = CPtiEngine::NewL();
CleanupStack::PushL( ptiEngine );
RArray<TUid> pluginUids;
CleanupClosePushL( pluginUids );
RArray<TLanguage> languages;
CleanupClosePushL( languages );
RArray<TTtsStyle> voices;
CleanupClosePushL( voices );
// Lists UIDs of available Text-To-Speech plugins
iTtsUtility->ListPluginsL( pluginUids );
for ( TInt i = 0; i < pluginUids.Count(); i++ )
// pluginUids.operator[]( i ).iUid
// contains the UID of an available TTS plugin (at index i)
iTtsUtility->OpenPluginL( pluginUids.operator[]( i ) );
iTtsUtility->GetSupportedLanguagesL( languages );
TBuf<64> languageName;
for ( TInt langIdx = 0; langIdx < languages.Count(); ++langIdx )
ptiEngine->GetLocalizedLanguageName( languages[langIdx], languageName );
// languageName now contains the name of language at index langIdx
TRAPD( err, iTtsUtility->GetSupportedVoicesL( languages[langIdx], voices ) );
if ( err == KErrNone )
for ( TInt voiceIdx = 0; voiceIdx < voices.Count(); ++voiceIdx )
// voices.operator[]( voiceIdx ).iVoice
// contains the name of voice for language at index langIdx
CleanupStack::PopAndDestroy(4); // closes the 3 arrays, deletes ptiEngine

See also

Archived:NSSTTS Common Symbian API

This page was last modified on 4 October 2012, at 14:17.
89 page views in the last 30 days.