Click here to Skip to main content
Click here to Skip to main content

Simple Program for Text to Speech Using SAPI (English Version)

By , 12 Nov 2001
 

Introduction

In this project I made an application program for Text-to-Speech Conversion. To build this application, we must install the SDK speech from Microsoft on our computer. You can download Speech SDK (it's free) from http://www.microsoft.comm/speech

The SAPI API provides a high-level interface between an application and speech engines. SAPI implements all the low-level details needed to control and manage the real-time operations of various speech engines.

Applications can control text-to-speech (TTS) using the ISpVoice Component Object Model (COM) interface. Once an application has created an ISpVoice object, the application only needs to call ISpVoice::Speak to generate speech output from some text data. In addition, the IspVoice interface also provides several methods for changing voice and synthesis properties such as speaking rate ISpVoice::SetRate, output volume ISpVoice::SetVolume and changing the current speaking voice ISpVoice::SetVoice

The project devided into five steps :

  1. Creating New Project
  2. Setting Project
  3. Building GUI 
  4. Coding

1. Creating New Project

First you will create the initial ATL project using the MFC AppWizard.

  1. In the Visual C++ environment, click New on the File menu, then choose the Projects tab.

  2. Select the MFC AppWizard (exe).

  3. Type TxtToSpeech as the project name.

Your dialog box should look like this:

Figure 1: New Project

Click OK and the MFC AppWizard presents a dialog box offering several choices to configure the type of MFC project (figure 2), choose Dialog based. After that, click Finish button

Figure 2: MFC AppWizard Step 1, choose Dialog based

2. Setting Project

To use SAPI (Speech Application Interface) in our application, we must set our project. In file StdAfx.h, Add code like this (after "#include <stdio.h>" but before the "#endif" statement) :

  #include <atlbase.h>
  extern CComModule _Module;
  #include <atlcom.h>

Change the project settings to reflect the paths. Using the Project->Settings. menu item, set the SAPI.h path. Click the C/C++ tab and select Preprocessor from the Category drop-down list. Enter the following in the "Additional include directories": with directory that Speech SDK available , such as D:\Program Files\Microsoft Speech SDK 5.1\Include. (see figure 3)

Figure 3: Setting path

To set the SAPI.lib path (see figure 4):

  1. Select the Link tab from the Same Settings dialog box.
  2. Choose Input from the Category drop-down list.
  3. Add the following path to the "Additional library path" (directory that Speech SDK available), example :
    D:\Program Files\Microsoft Speech SDK 5.1\Lib\i386.
  4. Also add "sapi.lib" to the "Object/library modules" line. 

Figure 4: Add library module Sapi.lib and set path

3. Building GUI

Model of GUI in this project like figure 5 :

Figure 5: GUI project

4. Coding

In GUI, double click Button, type OnSpeak as name of method. This code:

    UpdateData();
    ISpVoice * pVoice = NULL;

    if (FAILED(CoInitialize(NULL)))
    {
        AfxMessageBox("Error to intiliaze COM");
        return;
    }

    HRESULT hr = CoCreateInstance(CLSID_SpVoice, NULL, 
        CLSCTX_ALL, IID_ISpVoice, (void **)&pVoice);
    if( SUCCEEDED( hr ) )
    {
        hr = pVoice->Speak(m_sText.AllocSysString(), 0, NULL);
        pVoice->Release();
        pVoice = NULL;
    }

    CoUninitialize();

Note: m_sText is variable of Edit Box

After that, you can compile and run this project.

Reference

Speech SDK 5.1

License

This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here

About the Author

Agus Kurniawan
Founder PE College
Indonesia Indonesia
Member
He gradueted from Sepuluh Nopember Institute of Technology (ITS) in Department of Electrical Engineering, Indonesia. His programming interest is VC++, C#, VB, VB.NET, .NET, VBScript, Delphi, C++ Builder, Assembly,and ASP/ASP.NET. He's founder for PE College(www.pecollege.net), free video tutorial about programming, infrastructure, and computer science. He's currently based in Depok, Indonesia. His blog is http://geeks.netindonesia.net/blogs/agus and http://blog.aguskurniawan.net

Sign Up to vote   Poor Excellent
Add a reason or comment to your vote: x
Votes of 3 or less require a comment

Comments and Discussions

 
Hint: For improved responsiveness ensure Javascript is enabled and choose 'Normal' from the Layout dropdown and hit 'Update'.
You must Sign In to use this message board.
Search this forum  
    Spacing  Noise  Layout  Per page   
GeneralMy vote of 5memberosirisgothra18 Jan '12 - 15:31 
GeneralMy vote of 5memberFreeAsABird28 Jun '11 - 0:40 
GeneralSPERR_NOT_FOUNDmemberDennis Ray3 May '11 - 4:53 
GeneralYes,Very Good!groupchinesedragon11 May '10 - 3:17 
Generalis it possibl to viceversa of this program ie speech to textmembereswar pothula26 Nov '09 - 21:56 
GeneralRe: is it possibl to viceversa of this program ie speech to textmemberalawy875 Oct '10 - 13:39 
GeneralRe: is it possibl to viceversa of this program ie speech to textmemberHuangQihua26 Feb '11 - 20:46 
GeneralText to Speech -Audio File German Versionmembersmilechill21 Sep '09 - 4:25 
GeneralGetTranscriptmemberDanilo Queiroz13 Apr '09 - 15:30 
Generalcreating wav file in TTSmemberMember 282845212 Apr '09 - 23:21 
Generalproblem getting software for speech to text recognitionmembershashi.er.kant18 Jun '08 - 7:07 
QuestionSAPI text to speech looping problem!membercesarpachon9 Apr '08 - 15:31 
GeneralSTDAfx.h HELP!memberSebcity5 Feb '07 - 6:30 
GeneralRe: STDAfx.h HELP!membercristitomi23 Sep '07 - 5:27 
QuestionHow to generate music from text characters?memberakks_38 Nov '06 - 8:11 
Generalurgent : automation of enginemembernehasingh20 Jan '06 - 7:50 
Generalspeech recognitionmembermanikandanek29 Oct '05 - 0:55 
GeneralText To Speech Convertormembermanikandanek29 Oct '05 - 0:49 
GeneralRe: Text To Speech Convertormembersen_raj2230 Jan '06 - 17:53 
GeneralChanging voice !memberspirit19836 Aug '05 - 13:43 
GeneralGerman Output?!memberHansa4Ever24 Jun '05 - 2:23 
Generalis it possible not to use sdkmemberkaamsha8 Apr '05 - 10:41 
GeneralIntergrating TTS with direct soundmemberwtatters5 Apr '05 - 11:48 
Generalnice but too simple.sussAnonymous30 Mar '05 - 3:18 
GeneralRe: nice but too simple.membercristitomi23 Sep '07 - 5:33 
Questionhow to do speech to text using VBmemberCOOLBHUSHU29 Jan '05 - 18:51 
GeneralTTS to read web pagesussAnonymous3 Nov '04 - 5:08 
GeneralRe: TTS to read web pagesussAnonymous30 Mar '05 - 4:06 
GeneralTTS application that accept inpur frm command prompt and generate .wav filemembersunil choudhary17 Sep '04 - 0:28 
GeneralRe: TTS application that accept inpur frm command prompt and generate .wav filesussAnonymous30 Mar '05 - 4:03 
Generalabout speech events in speech sdk 5.1memberxunan31 Aug '04 - 1:53 
GeneralDeciding downloadmemberRJSoft20 Jul '04 - 6:54 
GeneralURGENT: Pronunce numbers as phone numbers with TTSmemberlxxxl9 Jun '04 - 10:21 
GeneralRe: URGENT: Pronunce numbers as phone numbers with TTSsussAnonymous30 Mar '05 - 4:08 
GeneralRe: URGENT: Pronunce numbers as phone numbers with TTSsussAnonymous30 Mar '05 - 4:08 
GeneralAgainmembersinmorn24 May '04 - 14:40 
GeneralRe: Againmembercristitomi23 Sep '07 - 5:37 
GeneralIt's great!!! *but a little question here...membercaprice198222 Apr '04 - 18:43 
GeneralRe: It's great!!! *but a little question here...sussAnonymous30 Mar '05 - 4:04 
GeneralHelpmembersinmorn18 Apr '04 - 15:57 
GeneralHi,Thanks the access and sosmembersinmorn5 Mar '04 - 15:23 
GeneralhisussAnonymous23 Feb '04 - 21:26 
GeneralRe: himembercristitomi23 Sep '07 - 6:56 
GeneralText to Speech on Win CEmemberhenrytaihk30 Dec '03 - 22:46 
GeneralRe: Text to Speech on Win CEsussAnonymous16 Feb '04 - 9:50 
GeneralPure SDK Based SAPI ProjectmemberR. Balaji Iyer4 Sep '03 - 20:27 
Generalwill do?sussArrowind28 Feb '04 - 2:49 
Generalatlsusstomato ketchup8 Aug '03 - 2:27 
Questioncan i get rid of the speech sdk??memberFARTal_error4 Aug '03 - 10:21 
Generalchange voicememberwerter119 Jul '03 - 19:50 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

Permalink | Advertise | Privacy | Mobile
Web01 | 2.6.130516.1 | Last Updated 13 Nov 2001
Article Copyright 2001 by Agus Kurniawan
Everything else Copyright © CodeProject, 1999-2013
Terms of Use
Layout: fixed | fluid