winxp操作系统上实现的网页tts读文程序

<!-- 本页面版权属于微软公司所有,考客程序对代码只做了简单修改,因为我对JavaScript一窍不通! 0)如果读网页上的英语错误,点击控制面板-语音-文字语音转换-语音选择_设置为marry 或sam-->
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" content="text/html; charset=UTF-8">
<TITLE>TTS Demo</TITLE>

 

<SCRIPT LANGUAGE="JavaScript">


//中文部分注解为顾熙杰添加,要读网页需要winxp操作系统或安装mstts5.1版本,作品原创 kaoke.cnnb.net

// Create the Sapi SpVoice object
//创建一个驱动器实例
var VoiceObj = new ActiveXObject("Sapi.SpVoice");

//改变阅读者
// ChangeVoice() function:
//   This function sets the newly selected voice choice from the Voice 
//  Select box on the Voice object.
function ChangeVoice() {
var i = parseInt( idsVoices.value );
VoiceObj.Voice = VoiceObj.GetVoices().Item(i);
}

//改变音频输出格式
// ChangeAudioOutput() function:
//  This function sets the newly selected audio output choice from the
//  Audio Output Select box on the Voice object.
function ChangeAudioOutput() {
var i = parseInt( idsAudioOutputs.value );
VoiceObj.AudioOutput = VoiceObj.GetAudioOutputs().Item(i);
}

//增加阅读速度
// IncRate() function:
//  This function increases the speaking rate by 1 up to a maximum
//  of 10.
function IncRate() {
if( VoiceObj.Rate < 10 )
{
  VoiceObj.Rate = VoiceObj.Rate + 1;
}
}


//减少阅读速度
// DecRate() function:
//  This function decreases the speaking rate by -1 down to a minimum
//  of -10.
function DecRate() {
if( VoiceObj.Rate > -10 )
{
  VoiceObj.Rate = VoiceObj.Rate - 1;
}
}

//增加音量
// IncVol() function:
//  This function increases the speaking volume by 10 up to a maximum
//  of 100.
function IncVol() {
if( VoiceObj.Volume < 100 )
{
  VoiceObj.Volume = VoiceObj.Volume + 10;
}
}


//降低音量
// DecVol() function:
//  This function decreases the speaking volume by -10 down to a minimum
//  of 0.
function DecVol() {
if( VoiceObj.Volume > 9 )
{
  VoiceObj.Volume = VoiceObj.Volume - 10;
}
}

//开始或停止读
// SpeakText() function:
//  This function gets the text from the textbox and sends it to the
//  Voice object's Speak() function. The value "1" for the second
//        parameter corresponds to the SVSFlagsAsync value in the SpeechVoiceSpeakFlags
//  enumerated type.
function SpeakText() {
if( idbSpeakText.value == "SpeakText" )
{
  // Speak the string in the edit box
  try
  {
   VoiceObj.Speak( idTextBox.value, 1 );
  }
  catch(exception)
  {
   alert("Speak error");
  }
}
else if( idbSpeakText.value == "Stop" )
{
  // Speak empty string to Stop current speaking. The value "2" for 
  // the second parameter corresponds to the SVSFPurgeBeforeSpeak
  // value in the SpeechVoiceSpeakFlags enumerated type.
  VoiceObj.Speak( "", 2 );
}
}

 

</SCRIPT>

 

<SCRIPT FOR="window" EVENT="OnQuit()" LANGUAGE="JavaScript">
//退出时回收tts资源,因为TTS资源是所有程序共享的,也就是说同时最多只有一个程序在阅读
// Clean up voice object
delete VoiceObj;
</SCRIPT>


<SCRIPT FOR="window" EVENT="OnLoad()" LANGUAGE="JavaScript">
//启动时设置比较慢的速度DecRate(),同时自动开始读SpeakText()  
        DecRate()
  SpeakText()
</SCRIPT>


</HEAD>

 

 

<BODY>

<H1 align=center><FONT size=10  font color=ff0000 > Wellcome to Kaoke! </FONT></H1>
<H1 align=center><FONT size=4 font color=008080> It's time for class! </FONT></H1>
<H1 align=center><IMG alt="" border=2 hspace=0 id=idImage src="mouthclo.bmp">  </H1>


<H1 align=center>  
<TEXTAREA ID=idTextBox COLS=90 ROWS=30 WRAP=VIRTUAL>How to Be a Successful Language Learner?
"Learning a language is easy. Even a child can do it!"
Most adults who are learning a second language would disagree with this statement.
For them,
learning a language is a very difficult task.
They need hundreds of hours of study and practice,
and even this will not guarantee success for every adult language learner.
Language learning is different from other kinds of learning.
Some people
who are very intelligent and successful in their fields
find it difficult to succeed in language learning.
Conversely,
some people who are successful language learners find it difficult to succeed in other fields.
Language teachers often offer advice to language learners:
"Read as much as you can in the new language."
"Practice speaking the language every day."
"Live with people who speak the language."
"Don't translate --- try to think in the new language."
"Learn as a child would learn;
play with the language."
But what does a successful language learner do?
Language learning research shows
that successful language learners are similar in many ways.
First of all,
successful language learners are independent learners.
They do not depend on the book or the teacher;
they discover their own way to learn the language.
Instead of waiting for the teacher to explain,
they try to find the patterns(模范, 式样) and the rules for themselves.
They are good guessers who look for clues and form their own conclusions.
When they guess wrong,
they guess again.
They try to learn from their mistakes.
Successful language learning is active learning.
Therefore(因此, 所以),
successful language learners do not wait for a chance to use the language;
they look for such a chance.
They find people who speak the language and they ask these people to correct them when they make a mistake.
They will try anything to communicate.
They are not afraid to repeat what they hear or to say strange things;
they are willing to make mistakes and try again.
When communication is difficult,
they can accept information that is inexact or incomplete.
It is more important for them to learn to think in the language
than to know the meaning of every word.
Finally,
successful language learners are learners with a purpose.
They want to learn the language because they are interested in the language and the people who speak it.
It is necessary for them to learn the language
in order to communicate with these people and to learn from them.
They find it easy to practice using the language regularly(有规律地, 有规则地, 整齐地, 匀称地)
because they want to learn with it.
What kind of language learners are you?
If you are a successful language learner,
you have probably been learning independently,
actively,
and purposefully.
On the other hand,
if your language learning has been less than successful,
you might do well to try some of the techniques(技术, 技巧, 方法, 表演法, 手法) outline above.

</TEXTAREA>
</H1>

<P align=center><STRONG><STRONG> 
Rate <STRONG> 
<INPUT id=idbIncRate name=button1 type=button οnclick=IncRate() value="    +    "></STRONG> 
<INPUT id=idbDecRate name=button2 type=button οnclick=DecRate() value="    -    " style="LEFT: 237px; TOP: 292px">     </STRONG>  

Volume <STRONG><STRONG> 
<INPUT id=idbIncVol name=button3 οnclick=IncVol() style="LEFT: 67px; TOP: 318px" type=button value="    +    "> 
<INPUT id=idbDecVol name=button4 οnclick=DecVol() type=button value="    -    " style="LEFT: 134px; TOP: 377px">
</STRONG></STRONG></STRONG></P>
 
<P align=center><STRONG><BUTTON id=idbSpeakText οnclick=SpeakText(); 
   style="HEIGHT: 24px; LEFT: 363px; TOP: 332px; WIDTH: 178px">SpeakText</BUTTON></STRONG></P>
 
<P align=center><STRONG>Voice                                             
   <STRONG>Audio Output </STRONG></STRONG></P>
<P align=center> 

<SELECT id=idsVoices name=Voices οnchange=ChangeVoice() style="FONT-FAMILY: serif; HEIGHT: 21px; WIDTH: 179px"> </SELECT>
            

<SELECT id=idsAudioOutputs name=AudioOutputs οnchange=ChangeAudioOutput() style="HEIGHT: 22px; WIDTH: 179px">  </SELECT>
 

<SCRIPT LANGUAGE="JavaScript">
// Code in the BODY of the webpage is used to initialize controls and
// to handle SAPI events

/***** Initializer code *****/
InitializeControls();

function InitializeControls()
{
// Initialize the Voices and AudioOutput Select boxes
var VoicesToken = VoiceObj.GetVoices();
var AudioOutputsToken = VoiceObj.GetAudioOutputs();

// Add correct strings to Voice Select box
for( var i=0; i<VoicesToken.Count; i++ )
{
  var oOption = document.createElement("OPTION");
  idsVoices.options.add(oOption);
  oOption.innerText = VoicesToken.Item(i).GetDescription();
  oOption.value = i;
}

// Add correct strings to Audio Output Select box
for( var i=0; i<AudioOutputsToken.Count; i++ )
{
  var oOption = document.createElement("OPTION");
  idsAudioOutputs.options.add(oOption);
  oOption.innerText = AudioOutputsToken.Item(i).GetDescription();
  oOption.value = i;
}
}

/***** Event handling code *****/
// These functions are used to handle the SAPI events

//开始阅读时触发的事件
// Handle StartStream event
function VoiceObj::StartStream() {
idbSpeakText.value = "Stop";
}

//停止阅读时触发的事件
// Handle EndStream event
function VoiceObj::EndStream() {
idbSpeakText.value = "SpeakText";
idImage.src = "mouthclo.bmp";
}


//根据音节变化口型
// Handle Viseme event
function VoiceObj::Viseme(StreamNum, StreamPos, Duration, VisemeType, Feature, VisemeId) {
// Map the VisemeId to the appropriate .bmp
if( VisemeId == 15 || VisemeId == 17 || VisemeId == 18 || VisemeId ==21 )
{
  idImage.src = "mouthop1.bmp";
}
else if( VisemeId == 14 || VisemeId == 16 || VisemeId == 19 || VisemeId == 20 )
{
  idImage.src = "mouthop2.bmp";
}
else if( VisemeId == 4 || VisemeId == 6 || VisemeId == 9 || VisemeId == 12 )
{
  idImage.src = "mouthop3.bmp";
}
else if( VisemeId == 1 || VisemeId == 2 || VisemeId == 3 || VisemeId == 11 )
{
  idImage.src = "mouthop4.bmp";
}
else if( VisemeId == 7 || VisemeId == 8 )
{
  idImage.src = "mouthnar.bmp";
}
else if( VisemeId == 5 || VisemeId == 10 || VisemeId == 13 )
{
  idImage.src = "mouthmed.bmp";
}
else
{
  idImage.src = "mouthclo.bmp";
}
}
</SCRIPT>

 

<STRONG>
<HR></STRONG>
<P></P>

</BODY>
</HTML>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值