Microsoft Speech SDK例子(js)

<html>
<head><title>语音测试例子</title></head>
<body>

音量:
<input id="vol"></input>语速<input id="rat"></input>
<p>
朗读人:
<select id="speaker">
</select>
输出设备:
<select id="outputer">
</select>

<p>
<textarea id="text" rows="3" cols="80">
我们的教育真是问题成堆,很多情况下不是在培育英才而是在糟蹋人才。不上学大不了是个不识字的文盲,进校门后就可能成为弄虚作假的高手;不上大学可能还对学术有一份敬重,进大学后才知道学术是“什么玩艺儿”。一个人从幼儿园和小学开始,学校就逼着他如何搞形式,如何说假话,如何拉关系。只要在中国从幼儿园读到大学毕业,任何一个天真纯洁的孩子,都可能培养成为一个圆滑世故的老油条;任何一个真诚的儿童,都可能成为一个伪君子。
</textarea>
<p>
<button  onClick="speak()">朗读</button><button  onClick="stop()">停止</button>
<p>
<p id="test"></p>
<script >
var sap;

//初始化TTS
function init()
{
	if(navigator.appName!="Microsoft Internet Explorer")
	{
		alert("请切换到IE内核");
		return false;
	}
	try
	{
	 sap= new ActiveXObject("Sapi.SpVoice");
	}
	 catch(ex)
	 {
		alert("初始化失败!"+ex);
		return false;
	 }
	 if(sap==null)
	 {
		alert("初始化失败!没有Sapi.SpVoice控件");
		return false;
	 }
	 
	 //
	 return true;
}
//初始化设置参数
function setting()
{

	vol.value=sap.Volume;
	rat.value=sap.Rate;
	var VoicesToken = sap.GetVoices(); 
	var AudioOutputsToken = sap.GetAudioOutputs(); 
	
	//朗读引擎
	for( var i=0; i <VoicesToken.Count; i++ ) 
	{ 
		var oOption = document.createElement("OPTION"); 
		speaker.options.add(oOption); 
		oOption.innerText = VoicesToken.Item(i).GetDescription(); 
		oOption.value = i; 
	} 
	
	//输出设备
	for( var i=0; i <AudioOutputsToken.Count; i++ ) 
	{ 
		var oOption = document.createElement("OPTION"); 
		outputer.options.add(oOption); 
		oOption.innerText = AudioOutputsToken.Item(i).GetDescription(); 
		oOption.value = i; 
	}
}
//获取设置参数
function change()
{
	try
	{
	sap.Volume=parseInt(vol.value);
	sap.Rate=parseInt(rat.value);
	sap.Voice = sap.GetVoices().Item(parseInt(speaker.value));
	sap.AudioOutput = sap.GetAudioOutputs().Item(parseInt(speaker.value));
	}
	catch(err)
	{
		alert("设置出错!"+err);
	}
}

if(init())
{
	setting();
}
function speak()
{
	change();
	try
	{
	sap.speak(text.innerText,1);
	}
	catch(err)
	{
		alert("朗读出错");
	}
}
function stop()
{
	sap.speak("",2);
}

//语音朗读状态
function getStatus()
{
	st=sap.Status;
	msg="Status:"
		+",\n CurrentStreamNumber:"+st.CurrentStreamNumber
		+",\n InputSentenceLength:"+st.InputSentenceLength 
		+",\n InputSentencePosition:"+st.InputSentencePosition
		+",\n InputWordLength:"+st.InputWordLength 
		+",\n InputWordPosition:"+st.InputWordPosition 
		+",\n InputWord:"+text.innerText.substring(st.InputWordPosition,st.InputWordPosition+st.InputWordLength ) 
		+",\n LastBookmark :"+st.LastBookmark  
		+",\n LastBookmarkId :"+st.LastBookmarkId  
		+",\n LastHResult :"+st.LastHResult  
		+",\n LastStreamNumberQueued :"+st.LastStreamNumberQueued  
		+",\n PhonemeId :"+st.PhonemeId  
		+",\n RunningState :"+st.RunningState   
		+",\n VisemeId  :"+st.PhonemeId  
		;
	test.innerText=msg;
	
}
//getStatus();
setInterval("getStatus()",100);
</script>
</body>
</html>

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值