'*************************************************************************** ' __________ __ ___. ' Open \______ \ ____ ____ | | _\_ |__ _______ ___ ' Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / ' Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < ' Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ ' \/ \/ \/ \/ \/ ' $Id: sapi5_voice.vbs$ ' ' Copyright (C) 2007 Steve Bavin, Jens Arnold, Mesar Hameed ' ' All files in this archive are subject to the GNU General Public License. ' See the file COPYING in the source tree root for full license agreement. ' ' This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY ' KIND, either express or implied. ' '*************************************************************************** ' Purpose: Make a voice clip file for the given text ' Parameters: $0 - text to convert ' $1 - file to write spoken text into (WAV format) 'To be done: ' - Somehow, persist oSpVoice across multiple clips to increase speed ' - Allow user to override voice, speed and/or format (currently uses Control Panel defaults for voice/speed) ' - Voice specific replacements/corrections for pronounciation (this should be at a higher level really) Const SSFMCreateForWrite = 3 Const SPSF_8kHz16BitMono = 6 Const SPSF_11kHz16BitMono = 10 Const SPSF_12kHz16BitMono = 14 Const SPSF_16kHz16BitMono = 18 Const SPSF_22kHz16BitMono = 22 Const SPSF_24kHz16BitMono = 26 Const SPSF_32kHz16BitMono = 30 Const SPSF_44kHz16BitMono = 34 Const SPSF_48kHz16BitMono = 38 Dim oSpVoice, oSpFS, nAudioFormat, sText, sOutputFile sText = Replace(WScript.Arguments(0), "\", "") sOutputFile = WScript.Arguments(1) nAudioFormat = SPSF_22kHz16BitMono 'Audio format to use, recommended settings: '- for AT&T natural voices, use SPSF_32kHz16BitMono '- for MS voices, use SPSF_22kHz16BitMono Set oSpVoice = CreateObject("SAPI.SpVoice") If Err.Number <> 0 Then WScript.Echo "Error - could not get SpVoice object. " & _ "SAPI 5 not installed?" Err.Clear WScript.Quit 1 End If Set oSpFS = CreateObject("SAPI.SpFileStream") oSpFS.Format.Type = nAudioFormat oSpFS.Open sOutputFile, SSFMCreateForWrite, False Set oSpVoice.AudioOutputStream = oSpFS oSpVoice.Speak sText oSpFS.Close Set oSpFS = Nothing Set oSpVoice = Nothing Set oArgs = Nothing WScript.Quit 0