微型机与应用
WEIXINGJI YU YINGYONG
2000　Vol.19　No.5　P.24-25




语音拨号电话的研究与开发
宋志辉徐劲飞周兵
摘 要：美国Sensory公司的语音识别芯片RSC－164，介绍了主控芯片和RSC－164间的通信接口以及在此基础上研制的能进行语音拨号的多功能电话。
关键词：语音拨号电话DSP MCU 语音识别 通信协议
　　随着大规模集成电路的快速发展，使原先在台式计算机（PC）上才能够完成的复杂功能已逐步能够在单片机系统上得以实现，各种具有特定功能的数字信号处理（DSP-Digital Singnal Process）
芯片愈来愈广泛地应用到家电产品中，给人们的生活带来了极大方便。语音识别技术就是其中一例。
　　现有的语音识别DSP芯片已经应用在电话机、身份识别、自动控制等多个领域中。具有语音识别能力、能够用声音进行拨号的电话机，在汽车驾驶员、病人、老年人、儿童等用户群体中具有较好的市场前景。
　　要实现语音拨号功能，电话机中必须有1片主控芯片（MCU-MicroController Unit）来控制语音识别DSP的工作，该主控芯片主要完成普通电话机的所有控制功能和对语音识别DSP的控制。目前，还没有具有这种功能的通用芯片，一般需要自行编写单片机软件来完成。笔者所在的单位，从事各种电话机的设计工作多年，针对市场需要，在开发具有本公司特色的电话拨号MCU过程中，加入了对语音识别DSP的控制部分，开发出了语音拨号电话。
1 系统结构
　　本系统将美国Sensory公司的语音识别芯片RSC－164（以下简称164）应用到自行编写的电话MCU上，成功地开发出了语音拨号电话，系统结构如图1所示。

图1 语音拨号电话结构图
　　在普通电话机上，用户只能通过手柄和键盘与电话进行交互。而在本系统中，用户还可以通过手柄或机座上的话筒与系统进行交互，即：用户通过话筒输入指令信息，164识别、解释出语音指令并将其传送到MCU，MCU再根据该指令将控制信号发送到其它器件（也包括164）以完成相应的动作。
　　同时，用户也可通过键盘向MCU发出动作请求，MCU将用户的请求以相应指令的形式发送给164，164即开始进入工作状态，通过话筒与用户进行交互以完成训练或识别等功能。
2 语音识别芯片介绍
　　Sensory的RSC－164是一种高性能的语音识别芯片，其结构如图2所示。

图2 RSC-164结构及接口
　　ROM中存放提示信息，提示信息分成2组，1组是芯片固有的训练和识别信息，如“请说姓名”、“请重复”、“噪音太大”等共57条。另外1组是开发人员根据电话机的型号可以加入的提示信息，包括用户进行语音训练、识别、浏览和删除等操作的提示信息及数字0～9等（可合成电话号码）共102条。
　　164将人名和对应的电话号码以记录的形式存放在RAM中，1Mb的RAM可存放30条记录（也可扩充至2Mb，存放60条记录）。每条记录由4个部分组成：
　　（1）与人名有关的语音识别模板；
　　（2）人名的语音录音；
　　（3）相关的电话号码（可达30位）；
　　（4）属性信息。
　　语音拨号电话机系统主要运用了164的语音训练和识别功能。语音训练过程简便、迅速。按训练键，系统提示用户说2遍人名，系统可自动提取话音中的特征信息，将它们转换成2个独立的语音识别模板，并比较这2个模板。如果2个模板的差异在允许的范围内，则将其中的1个模板和对应的语音录音存入记录中（否则，提示用户2次输入差别太大，重新进行训练），提示用户从键盘上输入对应的电话号码后完成训练过程。系统会将每次训练过程中产生的识别模板与所有已经存在的模板进行比较，如果非常相近，系统会提示用户重新通过话筒输入人名。
　　识别过程也就是用语音进行拨号的过程：按识别键，系统提示用户说出人名，将人名的语音特征信息转换成1个临时模板，并与记录中的模板进行比较，找出与该临时模板的语音特征相近的模板记录，若这2个模板的误差在允许的范围内（误差范围即识别精确度分为3个不同的级别，用户可自行设定），则返回相应记录的指针。这时，MCU可发出不同的命令，如读出对应的人名供用户确认是否识别正确、获得对应的电话号码并拨打出去等。
3 通信接口的实现
　　在语音拨号电话中，MCU是主控芯片，164是能够完成特定任务的从动芯片，MCU在适当的时候向164发出指令，164收到指令后进行相应的动作；并将执行结果返回给MCU，使MCU能够及时地了解164的当前状况。它们之间的这些协调过程都是以实时通信为基础的，通信功能由164的串行接口完成，它是由3根线组成的同步串行接口，如图2所示，即双向数据线（DATA）、MCU握手信号（MHS-Master Handshake）和164握手信号（SHS-Slave Handshake）。数据和握手信号在MCU和164间进行传送时3根线的作用如表1所示。信号通信时的时序如图3所示。
表1 串行接口在通信时的状态定义
信号线方向作用:164→MCU作用:MCU→164
DATA双向数据线SHS=0,数据有效MHS=0时,数据有效
MHSMCU→164=0时,数据位被接收=0时,数据位有效
SHS164→MCU=0时,数据位有效=0时,数据位被接收


图3 数据在MCU和164之间的传送方式
　　数据在MCU和164的1个握手周期中传送1位，可对照表1和图3来进行说明： 
　　（1）当MCU要向164传送1位数据时，MCU将DATA线置成相应的值，确认SHS为高，则将MHS置为低以请求发送；
　　（2）164检测到MHS的低电平后，从数据线上获得该数据位，并将SHS置为低，用来通知MCU164已接收了该数据位；
　　（3）MCU检测到SHS的低电平后，将MHS置为高以表示数据位已无效，并释放数据线的控制权（将数据线置为高）；
　　（4）164把SHS置为高，以通知MCU1个数据位传送过程结束，双方准备好进行下1个数据位的通信。
　　164接收完MCU指令的最后1位时，将SHS一直保持为低电平以表示164正在执行该条指令。这个期间，双方一般不进行信息传递（但用户可通过MCU给164发送中断指令，取消正在执行的指令），直到164执行完该条指令后，才将SHS置为高，并开始向MCU发送执行结果。该过程与MCU向164发送指令过程相似，表1和图3已做了说明。
　　双方之间的通信总是以8位（1个字节）为1个数据进行的，而且规定从高位到低位进行传送。每次通信的数据总和称为1个数据包，1个数据包由4部分组成：同步字（FFH，即由8个1组成）、长度字、数据字（数据字个数＝长度字减1）、校验字（长度字与所有数据字的和）。
　　164能够识别30组指令，并进行相应的操作。如02H是训练指令，03H是识别指令等。164在执行完指令后将操作结果返回给MCU，一共定义了19种返回信息，如00H表示指令执行成功，FFH表示指令执行被用户中断等。
4 总 结
　　根据本文提出的方法，我们已经成功开发出语音拨号电话的样机。开发中，对市场上现有电话操作不便的地方进行了改进，使之更加符合中国用户的使用习惯。同时，由于充分利用了RSC－164的语音识别功能，语音拨号功能稳定、可靠，在办公室、家庭等较安静的环境中，识别率可达95％以上。
　　在RSC－164的基础上，Sensory公司又推出了RSC－364芯片，其纠错能力更强，并加进了多种噪声处理技术，使其在各种环境中的平均识别率达到95．1％。电话机厂商运用RSC－364芯片，自行编写电话MCU，将能够开发出更加实用的语音拨号电话。
宋志辉（广东佛山东宝电器有限公司528000）
徐劲飞（广东佛山东宝电器有限公司528000）
周兵（广东佛山东宝电器有限公司528000）
参考文献
［1］孙涵芳，徐爱卿．MCS－51／96系列单片机原理 及应用修订版．北京：北京航空航天大学出版社，1996
［2］吕桂森．无绳电话机原理与维修．北京：人民邮电 出版社，1998
［3］Sensory Inc．Voice Dialer Data Book．19984 Holtek Inc．HT
［4］8CX0 8－Bit Microcontroller Series User′s Manual．1998
收稿日期：1999－12－28
