如:三亿二千零伍万二千零五元陆角柒分有0,1,2,3,4,5,6,7,8,9,10,100,1000,1W,1Y,YUAN,JIAO,FENG,dian,的声音文件如:0.mps3,1.mp3,100.mp3,yuan.mp3等,如何读依顺序读出上面中文数据!

解决方案 »

  1.   

    自己找到关系,然后按你找到的这种特定关系在后台代码中进行映射,传到前台嘛。以JSON格式就可以了,不是非常难吧?不知道这是不是LZ的意思捏?
      

  2.   


    可以用在数组中存放对象,用对象映射。
    var ary = new Array();
    ary.push({key: 1, mp3: 1.mp3});
      

  3.   

    做个对应关系,
    var rel = {
     ,'一' => '1.mp3'
     ,'二' => '2.mp3'
     ,'三' => '3.mp3'
      ..
     ..
     ..
    }剩下的问题是如何顺序播放的问题,一般播放器使用flash搞的,
    可以将'三亿二千零伍万二千零五元陆角柒分'发送给flash,flash根据这个串,切分,顺序播放相应mp3文件.
    这样的话,95%的工作量是写actionscript而不是javascript了.
      

  4.   

    不行啊,要求在同一页面,能用FLASH当然最好,且不要刷新当前页!如直接点个按钮什么的就可以读出正确数字来了!
      

  5.   

    最好是不要用FLASH播放器,因为我用的是直接调用MP3文件的!
      

  6.   

    方法1.无论是数组、JSON、还是一个分隔符连接的字中,反正先构造好一个声音文件的序列存储,好去依次取值。然后用js的setInterval定时每次播放一个声音文件。
    具体来说,就是更换播放器代码的媒体文件参数,调用PLAY方法。这个去查看OBJECT和EMBED的参数。方法2.将你的媒体序列作为一个播放列表,指给播放器。由它自动依次播放。
      这个要比上法好些,但更难讲,所以给你找了具体的实现方法,可以看下面的帖子:
    http://hi.baidu.com/widebright/blog/item/e122e9c45bfc84a88226ac93.html
      

  7.   

    IE可用,FF不行……
    <BGSOUND id="bg_music" src="">
    <INPUT TYPE="text" id="money" NAME="money" size="30" value="叁亿贰千零伍万贰千零伍元陆角柒分">
    <INPUT TYPE="button" VALUE="读" ONCLICK="readMoney()">
    <SCRIPT LANGUAGE="JavaScript">
    <!--
    var arr = new Array();
    arr[0] = ['零','0'];
    arr[1] = ['壹','1'];
    arr[2] = ['贰','2'];
    arr[3] = ['叁','3'];
    arr[4] = ['肆','4'];
    arr[5] = ['伍','5'];
    arr[6] = ['陆','6'];
    arr[7] = ['柒','7'];
    arr[8] = ['捌','8'];
    arr[9] = ['玖','9'];
    arr[10] = ['十','shi'];
    arr[11] = ['百','bai'];
    arr[12] = ['千','qian'];
    arr[13] = ['万','wan'];
    arr[14] = ['亿','yi'];
    arr[15] = ['兆','zhao'];
    arr[16] = ['元','yuan'];
    arr[17] = ['角','jiao'];
    arr[18] = ['分','fen'];
    var i=0;
    var bg_music = document.getElementById('bg_music');
    function readMoney(){
    var str = document.getElementById('money').value;
    if (i==str.length) {
    i = 0;
    return;
    }
    for (var j=0; j<arr.length; j++)
    {
    if (arr[j][0] == str.substring(i,i+1))
    {
    //alert("SpeechFile\/"+arr[j][1]+".mp3");
    bg_music.src = "SpeechFile\/"+arr[j][1]+".mp3";
    setTimeout("readMoney()",4000);
    i += 1;
    return;
    }
    }
    }
    //-->
    </SCRIPT>
      

  8.   

    其实不考虑楼主的具体要求,把这个问题扩展一下,就是使网页发出指定的连续读音,这个可以去找下TTS的资料。
    以前有一阵子我做过这个,当时也弄到一个网页形式的,并加以扩展。
    其实如果有下载一些英语学习资料,有的CHM,就可以根据你所点的英语词汇发音,这个就是利用TTS技术,不需要额外带什么语音库。如果你自己做这种WAV或MP3的语音库,那恐怕也太巨大了。
    楼主自己找下资料吧。我忘性大,现在也不容易找了。
      

  9.   

    现在假想一下,那应该还是创建ACTIVEX对象,然后象一般编程一样设置它的属性,赋给要朗读的文字内容,然后调用类似SPEAK这样的一个方法。总体讲,很方便。
      

  10.   


    // IE 的话,尝试下, 未测试var fread = new ActiveXObject("SAPI.SpVoice");
    fread.Voice = fread.GetVoices("Name=Microsoft Simplified Chinese").Item(0);
    fread.Rate = 5; //速度:-10,10 0 
    fread.Volume = 100; //声音:0,100 100 
    fread.Speak("叁亿贰仟零伍萬贰仟零伍元陆角柒分"); 
      

  11.   

    或者服务端程序,生成 wav
    组件,权限,服务端环境等一系列问题,自行研究
    <script language="jscript" runat="server">
    // 大致程序
    var fread = new ActiveXObject("SAPI.SpVoice");
    fread.Voice = fread.GetVoices("Name=Microsoft Simplified Chinese").Item(0);
    fread.Rate = 5; 
    fread.Volume = 100;var file = new ActiveXObject("SAPI.SpFileStream.1");
    file.Open("C:\\test.wav", 3);
    fread.AudioOutputStream = file;
    fread.Speak("叁亿贰仟零伍萬贰仟零伍元陆角柒分"); 
    file.Close();
    </script>
      

  12.   

    可以,用一个hashmap就可以了,或者以别的key--value的形式都可以
      

  13.   

    这个肯定是要有hashmap对应关系的。
      

  14.   


    那些声音文件你有吗?没有的话自然不出声……
    我的所有声音文件都存在名为SpeechFile的文件夹下,分别名为0.mp3、1.mp3……yuan.mp3、jiao.mp3、fen.mp3
    把 
    bg_music.src = "SpeechFile\/"+arr[j][1]+".mp3";
    这里的 SpeechFile\/ 改为你本地的路径(/全部替换为\/)
    文件格式如果不是mp3的话也需要修改;
    再把
    arr[0] = ['零','0'];
    ……
    arr[18] = ['分','fen'];
    所有的0、1、2……yuan、jiao、fen 改成你的声音文件名称
    试试
      

  15.   


    我用的是wav文件,都做好了对应关系,但提示说:
    行:3
    字符:1
    错误:缺少对象
    代码:0请问这是为什么啊?
      

  16.   

    我已改过请看现面代码,但老是出现如上提示!<BGSOUND id="bg_music" src="">
    <INPUT TYPE="text" id="money" NAME="money" size="30" value="叁亿贰千零伍万贰千零伍元陆角柒分">
    <INPUT TYPE="button" VALUE="读" ONCLICK="readMoney()">
    <SCRIPT LANGUAGE="JavaScript">
    <!--
        var arr = new Array();
        arr[0] = ['零','0'];
        arr[1] = ['壹','1'];
        arr[2] = ['贰','2'];
        arr[3] = ['叁','3'];
        arr[4] = ['肆','4'];
        arr[5] = ['伍','5'];
        arr[6] = ['陆','6'];
        arr[7] = ['柒','7'];
        arr[8] = ['捌','8'];
        arr[9] = ['玖','9'];
        arr[10] = ['拾','shi'];
        arr[11] = ['百','bai'];
        arr[12] = ['千','qian'];
        arr[13] = ['万','wan'];
        arr[14] = ['亿','yi'];
        arr[15] = ['兆','zhao'];
        arr[16] = ['元','yuan'];
        arr[17] = ['角','jiao'];
        arr[18] = ['分','fen'];
    var i=0;
    var bg_music = document.getElementById('bg_music');
        function readMoney(){
            var str = document.getElementById('money').value;
            if (i==str.length) {
                i = 0;
                return;
            }
            for (var j=0; j<arr.length; j++)
            {
                if (arr[j][0] == str.substring(i,i+1))
                {
                    //alert("H:\MU\mu\"+arr[j][1]+".wav");
                    bg_music.src = "H:\MU\mu\"+arr[j][1]+".wav";
                    setTimeout("readMoney()",4000);
                    i += 1;
                    return;
                }
            }
        }
    //-->
    </SCRIPT>
      

  17.   


    把  
    bg_music.src = "SpeechFile\/"+arr[j][1]+".mp3";
    这里的 SpeechFile\/ 改为你本地的路径(“\”全部替换为"\"或"\/")注意红色部分!
    LZ的代码"H:\MU\mu\"+arr[j][1]+".wav" 其中蓝色的部分会视为转义,使字符串不能正常结束
    应改为:bg_music.src = "H:/MU/mu/"+arr[j][1]+".wav";
    或:bg_music.src = "H:\/MU\/mu\/"+arr[j][1]+".wav";
      

  18.   

    木有wav文件,我还上百度搜了3个比较小的,居然是“北京烤鸭”的普通话、粤语和English版本…… 
    确保可以读wav文件,测试通过!
      

  19.   


    呵呵,我现在只用wav文件代用并不是读音,但问题是不出声!直接代码到:<BGSOUND id="bg_music" src="0.wav">就可以出声!
      

  20.   

    <BGSOUND id="bg_music" src="0.wav">
    这样肯定可以.但不方便更换和控制播放停顿.用OBJECT的播放控制应该可以.上面还有提到那种TTS技术的,我也看过一些,的确不错.而且还有的网页利用AGENT,会出现一个动画小人物(包括在国外大名鼎鼎的魔法师梅林大师),能做各种表情动作,然后就是还可以读你让他读的话.用在教育类的网页上是最合适的.但正规网站就几乎没用的了.
      

  21.   

    看第一种.相对于BGSOUND,用OBJECT较好.它能更好地监测和控制.可以做到读完上一个声音文件后,监测到已播放完毕,然后就让它去播放下一个声音文件.这样,对于声音长度不同的文件来说,效果更好,听来更自然.