语音识别软件
高级搜索    收藏本站    儿歌软件    我爱宝宝网  
热门关键字:  去噪声  英才  语音识别代码  语音识别  语音识别芯片
当前位置 :| 主页>语音合成>

微软语音识别SDK浅谈(1)

来源: 作者: 时间:2009-03-05 Tag:微软语音识别SDK   点击:
   这几天等SAT成绩,没心情干些正事,所以就研究了一下Microsoft Speech SDK(微软语音SDK)。它本来是一个基于Win32 API的语音识别SDK,只能做基本的语音识别。后来微软在此基础上推出了Speech Application SDK(SASDK),可以让程序员在框架中开发出具有语音识别,文本朗读(TTS)功能的ASP.NET网站。这意味着,用它开发的网站可以惠及更多的用户,因为用户不需要安装什么,只需要在浏览器中输入地址,就可以和机器交谈了,岂不妙哉!

    只可惜,这已经是2003年的事情了——那个时候,微软刚刚发布Visual Studio .NET 2003,一个划时代的IDE。所以SASDK也只是支持VS2003,Win XP/2003,IIS5.0/6.0而已。时隔五年,微软貌似都没有动这个产品...也许当时人们宁可相信,比尔盖茨所预言的几种未来即将广泛应用的产品(含触摸屏)之一的语音识别技术没有在市场上获得成功,所以微软一直就把这个SASDK闲置着...也许对待和它合作的企业,微软肯定是有最新的技术给他们...不过,对于这个免费SDK,微软只把它更新的到了1.1,它现在也只支持ASP.NET 1.0...

    这也是为什么我前几天折腾了一下虚拟机...正好还留着先前下载的Win Server 2003中文版,还留着6年级时买的VS 2003...所以就把它们都装上了。不过,SASDK有些Sample还是不能正常运行,因为它们不支持中文版操作系统。一旦运行在中文版操作系统上,它们的某些区域设置会变成ZH-cn,这会与语音库的参数EN-us不匹配...不过问题不是很严重,大部分功能应该都是可以用的。

    好了,让我们言归正传。TTS想必大家都听说过,就是能让计算机发声的东西。语音识别呢?如果你在用Windows Vista,你就可以享受语音识别软件给你带来的方便。'开始' '计算器' '第一个',说出这些命令,你就可以运行那个华丽的计算器啦!不过,这还是仅仅停留在使用一个软件的水平上。我们来看看微软究竟是让一台“冯·诺依曼”计算机拥有如此之智慧的~

    呵呵,整个工作流程就是这样,相信你也能猜到百分之八十!其实真正的模拟信号->数字信号->语音->文字的转化,也就是语音识别引擎,才是微软的看家技术呢~不过根据微软提供的平台和接口,我们也能对整个工作流程有蛮深入的了解,能学到很多知识啊!~对语言呢,我们也会有一个全新的认识。

    目前我们只关心如何处理微软语音识别引擎的输出。

    语音识别引擎处理数据之后,最先输出的格式为Semantic Markup Language(SML,语义标记语言,基于XML)。程序员要做的,就是定义一个语法文件(grammar rule),来筛选SML中的数据。下面就是一个语法文件实例:

<grammar root="ruleVTrade" version="1.0" xmlns="http://www.w3.org/2001/06/grammar"
 xml:lang="en-US" tag-format="semantics-ms/1.0">
 
    <rule id="ruleVTrade" scope="public">
        <item repeat="0-1">  I want to  </item>
        <item repeat="0-1">  I would like to  </item>
        <item repeat="0-1">
            <ruleref uri="#ruleAction"/> <tag> $.Action = $ </tag>
        </item>
        <item repeat="0-1"> a  </item>
        <item repeat="0-1"> an  </item>
        <item repeat="0-1">
            <ruleref uri="#ruleVehicle" /> <tag> $.Vehicle = $ </tag>
        </item>
        <item repeat="0-1">  please  </item>
    </rule>
 
    <rule id="ruleAction">
        <one-of>
            <item>  buy  <tag> $._value = "BUY" </tag> </item>
            <item>  sell  <tag> $._value = "SELL" </tag> </item>
        </one-of>
    </rule>
 
    <rule id="ruleVehicle">
        <one-of>
            <item>  car  <tag> $._value = "CAR" </tag> </item>
            <item>  auto  <tag> $._value = "AUTO" </tag> </item>
            <item>  truck  <tag> $._value = "TRUCK" </tag> </item>
        </one-of>
    </rule>
 
</grammar>

    这相当于:

           I want to               buy          a               auto               please

        I would like to          sell          an              truck

                                                                          car

      所以无论你是说出: I want to sell an auto please. 还是 I would like to buy a car. 都是可以被识别的。注意每个tag有一个'repeat'属性,如果设置为'0-1'这就表示这一项可以不说或说一次。

      其实XML可以算是一种树结构...我也曾经想过用n叉树的结构做语法...但愿某一天闲下来的时候能把这个构想实现...

      然后再看一下TTS的工作步骤图:

    这个无非是反操作而已...术语叫做Speech Synthesis。

    微软语音识别SDK,就是一款你所期待的结合语音识别和语音朗读技术的SDK。通过它,你可以建立一个以语音为主要人机交互方式的网站或服务。这类服务可以使用于电话线路(Line-in),台式PC,或者Windows Mobile...(再一次见证了微软的雄心...)。并且,这个软件是不难开发的。为了让3岁小孩都会开发..(有点夸张了,哈哈)...微软开发了很多傻瓜型控件,例如:

    不过你还是可以自己动手去写代码的。毕竟控件只能满足最最基本的需求...不然整个世界不就是无码编程的世界?那是非常不现实的...

    最后附上整个平台的工作示意图:

    这周末如果有时间,跟大家分享一个语音SDK的例子,用它来做对话和Q/A问答,挺好玩的。如果有时间...


最新评论共有 1 位网友发表了评论
发表评论
评论内容:不能超过250字,需审核,请自觉遵守互联网相关政策法规。
用户名: 密码:
匿名?
注册