大虾们救命啊,谁弄过Web语音开发程序啊

fletcher 2005-11-29 06:24:57
最近公司要开发一个语音开发程序,而且是Web的,以前没有弄过,研究了一段时间,没有什么起色。
哪为大虾做过的话,进来help我啊,有源代码研究就更好了。不胜感激啊.我的邮箱是starolpboy@126.com
...全文
435 30 打赏 收藏 转发到动态 举报
写回复
用AI写文章
30 条回复
切换为时间正序
请发表友善的回复…
发表回复
n43e120 2006-03-16
  • 打赏
  • 举报
回复
http://www.microsoft.com/downloads/details.aspx?FamilyId=5DAAE9C4-188C-4547-A9D6-1671132A39A1&displaylang=en&EventType=getsdk

Microsoft Speech Application Software Development Kit (SASDK) Version 1.0
Brief Description
The Microsoft Speech Application SDK (SASDK) is a set of development tools supporting the Speech Application Language Tags (SALT) specification that will make it easier and faster for developers to incorporate speech functionality into Web applications.
Download files below
zhouyong2052 2006-03-16
  • 打赏
  • 举报
回复
to MonkWang(象写情书一样写程序) :
能不能给一份资料,zhouyong2052@yahoo.com.cn
cat_hsfz 2006-03-15
  • 打赏
  • 举报
回复
“语言开发”这个题目那么大,楼主指的是什么?是客户语音输入你的Web要识别,还是说你的Web能够通过语音进行表达?
dh20156 2006-03-15
  • 打赏
  • 举报
回复
一定要用到ACTIVEX,参考一下这个:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>QBMusicParser</title>
<meta name="vs_defaultClientScript" content="JavaScript">
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
<meta name="GENERATOR" content="Microsoft Visual Studio.NET 7.0">
<meta name="ProgId" content="VisualStudio.HTML">
<meta name="Originator" content="Microsoft Visual Studio.NET 7.0">
<meta name="Author" content="LvYou,吕游">
</head>

<body MS_POSITIONING="GridLayout" onload=WebMain()>
<OBJECT ID="DAControl" style="height:1px;width:1px" CLASSID="CLSID:B6FFC24C-7E13-11D0-9B47-00C04FC2F51D" >
</OBJECT>

把QB的乐谱放进来试试:
<select onchange="txtMusic.value=value">
<option value="o2a4b4>c4d8e8e4d4c4o2b4a4b4o3c4o2b8a8a1o2a4b4o3c4d8e8e8a4e8e4d4c4c4c8d8c8e8e1o3a8a4a8a4e4g8g4g8g4e8d8d8c8c4c4g8e8e1o3a8a4a8a4b8a8g8g4g8g4e8d8c4c4o2b8a8g4a1o3d8d8d8e8g4e8g8o2a1o4c8c8c8c8o3b4a8g8g1o3d8d8d8e8g8f8e4d8d4e8g8e8e4d8d8d8e8g4o4c8o3b8a1">歌曲1</option>
<option value="o3g16a8g16o4c8o3a16g16e2d16e8g16e8d16e16o2a2o3c16c8o2a16g8a8o3c8.d16c4d16d8c16o2a8o3e8d2o3g16e8g16e8g8a16a8o4c16o3a8g8e16e8d16e8g8e2o3g16e8g16e8g8a16a8o4c16o3a8g8e16e8d16e8g8e2o3d8.e16d8e8g8.a16g8a8o4c4.o3a8o4c2o3a16a8a16g8a8g8.e16d8e8g1o3d16d8c16o2a8o3d16e16c2">歌曲2</option>
<option value="o3e16g16a4a8g16a16a4p8a16e16g8g8g8a16g16g4d8e16d16o3d4d8e16d16d4c8d16e16e2.p8e16g16o3a4a8g16a16a4p8a16o4c16d8d8d8c16d16d4d8c16o3a16o3a4g16a8g16e4g8e16a16a1a4p4p4p8a16o4c16o4d8d8d8c16d16d4p8d16e16d8d8c16d8c16o3a4p8a16o4c16o4d16d8.c16d8.d8d8c16d8o3b16b2.p8a16o4c16d8d8d8c16d16d4p8d16e16o4d8d8c16d8c16o3a4p8a16o4c16d8d8c16d8.d8d8c16d8o3b16b2.p8e16g16o3a4a8g16a16a4p8a16e16g8g8g8a16g16g4d8e16d16d4d8e16d16d4c8d16e16e2.g8e16a16a1">歌曲3</option>

</select>

<textarea id=txtMusic rows=10 cols=40></textarea>
<button onclick="Play(txtMusic.value)">播放</button>
<button onclick="Stop()">停止</button>

</body>
</html>

<script language=javascript>
<!--

/************************************
JScript+DirectAnimation播放QB音乐程序
10/10/2002 4:03初稿
其中有很多QB音乐指令还不支持
未完成,未整理,仅供参考研究
LvYou 吕游 lvyou@msn.com
************************************/

function CPlayer(){
this.PlaySoundFont=PlaySoundFont
this.AdjustSpeed=AdjustSpeed
this.AdjustLevel=AdjustLevel
this.AdjustLevelUp=AdjustLevelUp
this.AdjustLevelDown=AdjustLevelDown
this.getTimeStandard=getTimeStandard

var m_sfpm=80; //每分钟多少个8分音符
var SFLength=100;
var CurrentLevel=4;

function PlaySoundFont(sf,sflength){
status=sf
snd.SwitchTo(m.SinSynth.Rate(GetFrq(sf)))
return
}
function AdjustSpeed(sfpm){
m_sfpm=sfpm
}

function getTimeStandard(){
return 20000/m_sfpm*8;
}

function AdjustLevel(sflv){
CurrentLevel=sflv;
}
function AdjustLevelUp(){
CurrentLevel++;
}

function AdjustLevelDown(){
CurrentLevel--;
}



function GetFrq(sf){
var feq=0;
switch (sf){
case "C":
feq=264
break;
case "D":
feq=297
break;
case "E":
feq=330
break;
case "F":
feq=352
break;
case "G":
feq=396
break;
case "A":
feq=440
break;
case "B":
feq=495
break;
case "P":
feq=0;
break;
default:
feq=0;
break;
}
feq=feq*Math.pow(2,CurrentLevel-2)
return feq
}
function GetInterval(sflen){
return 100;
}
}

function parseCommand(strMusic){
var cmdstr="";

var SoundFont=/^([CDEFGABP])(\d{0,2})(\.?)/i

var LevelAdjust=/^O([123456])/i
var LevelUP=/^>/i
var LevelDown=/^</i

var SpeedAdjust=/^T(\d{1,})/i

var result;

result=strMusic.match(SoundFont)
if (result!=null){
if (RegExp.$2=="")
cmdstr="SF " + RegExp.$1 + " 8" //默认8分音符
else
if (RegExp.$3=="") //不带附点
cmdstr="SF " + RegExp.$1 + " " + RegExp.$2
else //带附点
cmdstr="SF " + RegExp.$1 + " " + parseInt(RegExp.$2)*2/3

return new Array(cmdstr,RegExp.lastIndex)
}

result=strMusic.match(LevelAdjust)
if (result!=null){
cmdstr="LA " + RegExp.$1
return new Array(cmdstr,RegExp.lastIndex)
}
result=strMusic.match(LevelUP)
if (result!=null){
cmdstr="LU"
return new Array(cmdstr,RegExp.lastIndex)
}
result=strMusic.match(LevelDown)
if (result!=null){
cmdstr="LD"
return new Array(cmdstr,RegExp.lastIndex)
}

result=strMusic.match(SpeedAdjust)
if (result!=null){
cmdstr="SA " + RegExp.$1
return new Array(cmdstr,RegExp.lastIndex)
}
}

var MusicBuffer
var PlayInProgress=false
var TimerID

function DoPlayMusic(strMusic){

PlayInProgress=true

if (MusicBuffer!=""){
strMusic+=MusicBuffer
MusicBuffer=""
}
var ParseResult=parseCommand(strMusic)
if (typeof(ParseResult)=='undefined'){
Player.PlaySoundFont("P",sflength)
PlayInProgress=false
return
}
//alert(ParseResult)
var cmd=ParseResult[0]
var idx=ParseResult[1]

cmd=cmd.split(" ")
//alert(cmd)
//alert(strMusic.substr(idx))
switch(cmd[0]){ //命令种类
case "SF": //soundfont
var sf=cmd[1].toUpperCase();
var sflength=parseInt(cmd[2])
Player.PlaySoundFont(sf,sflength)
//alert(5000/sflength)
TimerID=setTimeout("DoPlayMusic('" + strMusic.substr(idx) + "')",Player.getTimeStandard()/sflength)
break;
case "LA": //Level Adjust
Player.AdjustLevel(cmd[1])
TimerID=setTimeout("DoPlayMusic('" + strMusic.substr(idx) + "')",0)
break;
case "LU": //Level Adjust
Player.AdjustLevelUp()
TimerID=setTimeout("DoPlayMusic('" + strMusic.substr(idx) + "')",0)
break;
case "LD": //Level Adjust
Player.AdjustLevelDown()
TimerID=setTimeout("DoPlayMusic('" + strMusic.substr(idx) + "')",0)
break;
case "SA": //Speed Adjust
Player.AdjustSpeed(cmd[1])
TimerID=setTimeout("DoPlayMusic('" + strMusic.substr(idx) + "')",0)
break;
}

}

function Play(MusicSegment){
if (!PlayInProgress)
DoPlayMusic(MusicSegment)
else
MusicBuffer+=MusicSegment
}

function Stop(){
clearTimeout(TimerID)
Player.PlaySoundFont("P",1)
PlayInProgress=false
}
function WebMain(){

m = DAControl.MeterLibrary;
snd=m.ModifiableBehavior(m.Silence);
DAControl.Image=m.EmptyImage;
DAControl.Sound=snd
DAControl.Start()

Player=new CPlayer()

}
//-->
</script>
MonkWang 2006-03-15
  • 打赏
  • 举报
回复
我只是在网上找到并实现了那个能让textbox里的字符发音的程序! 其他的就没作过了
帮你顶!
顺便学习!
kkeemmgg 2006-03-15
  • 打赏
  • 举报
回复
microsoft在2002年5月发布了基于.net平台下的语音应用程序开发工具包.net speech sdk可用于web语音应用程序.可以去microsoft网站免费下载..net speech sdk不是采用voiceXML标准的,是自行定义的SALT标准,不过已提交国际组织.
zengyu0102 2006-03-15
  • 打赏
  • 举报
回复
怎么用flash实现!
已经是第二个人这么说了!
期待……
zengyu0102 2006-03-15
  • 打赏
  • 举报
回复
我的毕业设计课题也是基于web的聊天系统,要实现语音和视频!
应该类似吧。
期待问题的解决,顶到底!
nameone 2006-03-15
  • 打赏
  • 举报
回复
activeX
lovebanyi 2006-03-15
  • 打赏
  • 举报
回复
我是用flash做的.
blackhero 2006-03-13
  • 打赏
  • 举报
回复
在ms网站上搜Speech 5 xdk
稍微有点无敌 2006-03-13
  • 打赏
  • 举报
回复
无论如何,一定要用到AcitveX
boyok 2006-03-13
  • 打赏
  • 举报
回复
我做过 ,可以共同探讨 EM:wade311@126.com
lovebanyi 2006-01-06
  • 打赏
  • 举报
回复
我在研究中...还没有写出来不过差不多了.资料都是英文的.
我又回来了`` 2006-01-06
  • 打赏
  • 举报
回复
需要到官方网站上down一个COM:sapi.dll
我又回来了`` 2006-01-06
  • 打赏
  • 举报
回复
<!-- Copyright @ 2001 Microsoft Corporation All Rights Reserved. -->
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" content="text/html; charset=UTF-8">
<TITLE>TTS Demo</TITLE>

<SCRIPT LANGUAGE="JavaScript">

// 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">
// Clean up voice object
delete VoiceObj;
</SCRIPT>

</HEAD>





<BODY>
<H1 align=center>Simple TTS (DHTML)</H1>
<H1 align=center><FONT size=3>        </FONT>
<IMG alt="" border=2 hspace=0 id=idImage src="mouthclo.bmp">  </H1>
<H1 align=center>
<TEXTAREA ID=idTextBox COLS=50 ROWS=10 WRAP=VIRTUAL>Enter text you wish spoken here</TEXTAREA>
</H1>

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

Volume <STRONG><STRONG>
<INPUT id=idbIncVol name=button3 onclick=IncVol() style="LEFT: 67px; TOP: 318px" type=button value=" + "> 
<INPUT id=idbDecVol name=button4 onclick=DecVol() type=button value=" - " style="LEFT: 134px; TOP: 377px">
</STRONG></STRONG></STRONG></P>

<P align=center><STRONG><BUTTON id=idbSpeakText onclick=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 onchange=ChangeVoice() style="FONT-FAMILY: serif; HEIGHT: 21px; WIDTH: 179px"> </SELECT>
           

<SELECT id=idsAudioOutputs name=AudioOutputs onchange=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>
qwertxp 2006-01-06
  • 打赏
  • 举报
回复
还是要DX啊。。。
starfire21 2006-01-06
  • 打赏
  • 举报
回复
写个OCX控件,在网页里面用JAVASCRIPT调用接口
veryhappy 2006-01-05
  • 打赏
  • 举报
回复
关注……
walkline 2006-01-05
  • 打赏
  • 举报
回复
呵呵,用framework2?
加载更多回复(10)
你想当“李逍遥”式的“大侠”吗? 这里无需计算机基础,无需编程经验,你也不必是计算机专业的在校大学生....只要爱好游戏,怀揣梦想! 有一定自主学习能力,跟着刘老师从“编程小白”修炼为游戏研发“大虾”吧!!!学习好Unity,其先决条件是一定要有稳固、扎实的编程基础!课程 《C# For Unity系列之入门篇》配套学习资料链接:http://pan.baidu.com/s/1gflxreN 密码:sou5;刘老师讲Unity学员群(2) 497429806一、热更新系列(技术含量:中高级):A:《lua热更新技术中级篇》https://edu.csdn.net/course/detail/27087B:《热更新框架设计之Xlua基础视频课程》https://edu.csdn.net/course/detail/27110C:《热更新框架设计之热更流程与热补丁技术》https://edu.csdn.net/course/detail/27118D:《热更新框架设计之客户端热更框架(上)》https://edu.csdn.net/course/detail/27132E:《热更新框架设计之客户端热更框架(中)》https://edu.csdn.net/course/detail/27135F:《热更新框架设计之客户端热更框架(下)》https://edu.csdn.net/course/detail/27136二:框架设计系列(技术含量:中级): A:《游戏UI界面框架设计系列视频课程》https://edu.csdn.net/course/detail/27142B:《Unity客户端框架设计PureMVC篇视频课程(上)》https://edu.csdn.net/course/detail/27172C:《Unity客户端框架设计PureMVC篇视频课程(下)》https://edu.csdn.net/course/detail/27173D:《AssetBundle框架设计_框架篇视频课程》https://edu.csdn.net/course/detail/27169三、Unity脚本从入门到精通(技术含量:初级)A:《C# For Unity系列之入门篇》https://edu.csdn.net/course/detail/4560B:《C# For Unity系列之基础篇》https://edu.csdn.net/course/detail/4595C: 《C# For Unity系列之中级篇》https://edu.csdn.net/course/detail/24422D:《C# For Unity系列之进阶篇》https://edu.csdn.net/course/detail/24465四、虚拟现实(VR)与增强现实(AR):(技术含量:初级)A:《虚拟现实之汽车仿真模拟系统 》https://edu.csdn.net/course/detail/26618五、Unity基础课程系列(技术含量:初级) A:《台球游戏与FlappyBirds—Unity快速入门系列视频课程(第1部)》 https://edu.csdn.net/course/detail/24643B:《太空射击与移动端发布技术-Unity快速入门系列视频课程(第2部)》https://edu.csdn.net/course/detail/24645 C:《Unity ECS(二) 小试牛刀》https://edu.csdn.net/course/detail/27096六、Unity ARPG课程(技术含量:初中级):A:《MMOARPG地下守护神_单机版实战视频课程(上部)》https://edu.csdn.net/course/detail/24965B:《MMOARPG地下守护神_单机版实战视频课程(中部)》https://edu.csdn.net/course/detail/24968C:《MMOARPG地下守护神_单机版实战视频课程(下部)》https://edu.csdn.net/course/detail/24979

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧