目前,市场上的语音芯片和语音板很多,从性能价格比上看,美国1SD公司的ISD系列录放芯片可谓是一支独秀。1SD器件使用直接电平存储技术,省去了A/D、D/A转换;内部集成了大容量的EERPOM,不再需要扩展存储器;控制简单,控制管脚与TFL电平兼容。具有集成度高、音质好、使用方便等优点,是一种理想的语音处理芯片。
在控制上,除去手动外,lSD器件也可以通过地址寻址来定位,但它的地址不是字节地址单元,而是信息段的基本组成单位。以ISD2560为例,它内部的480kB的EEPROM均匀地规划为600行,每个地址单元指向其中一行,有600个地址单元。ISD2560的录放时间是60s,因此地址分辨率是100ms。lSD器件可进行多段地址操作,每一段称为一个信息段,它可以占用-行和多行存储空间。-个地址单元多只能作为一个独立的段。因此,ISD2560多可以分为600个信息段m。
2当前ISD芯片开发存在的问题
通常情况下,只能使用lSD器件提供的无需知道地址的操作模式,即手动模式,这只适合于开发语音玩具,而无法满足复杂操作或实时系统中应用的要求。为实现以上应用,使用对地址直接操作的办法。但在实用中,一些电路开发设计只是在基于语音信号已经写人芯片,并且段地址已经知道的基础上才能进行。然而,不可避免地要遇到必须将语音写入的时候。如果手动处理,采用按“录音”按键录音,“停止”按键停止,假如录音段数特别多,就要频繁地按上述按键,实在让人疲惫不堪。此外,手动按下“录音”及“停止”按键的时间也很难掌握,这就容易产生段间空白,造成芯片空间浪费,对语音段特别多,而语句又特别短的提示如一些单字、单词更是浪费严重。不仅这样,由于短句中空白时间过长,合成放音时出现语音不连贯。另外,直接对连接到1SD芯片的传声器录音会造成情绪紧张,容易出错,且无法对录入的语音进行处理。
3 解决方法
基于上述原因,需要设计一种lSD语音开发平台,借助传声器通过计算机的声卡将所有待写语音信号一并录入计算机,存储为*.wav文件,然后利用声音剪辑软件将各个词语(短句)分离出来。因为如果不是同时录音的话,对同一个人来说,其声音在不同时间、不同场合、不同情绪时都会有着很大的差别。如电子体重计,“您的体重是五十一公斤,您的身高是一百七十二厘米”,应该是由“您的、体重、身高、是、公斤、厘米、五、十、一、百、七、二”等12个词合成后形成的,如果由于某种原因,引起了任何一个词与其它语调不同,提示时就会显得特别突出,听起来有种怪怪的感觉。
若用计算机录音,可以一并录入很多段话(并非一定是全部需要的),然后从中选出所需词语(短句)。因为这些话是在较短的时间内完成的,所以不会有很大的语调变化,将从中选出的词组合起来时也不会显得牵强,听起来感觉不到这些句子是由词语拼凑起来的。
除此之外,如果有语音库,还可以直接从其中抽出词语来组成所需的句子,并且还省去了请录音人员的开支。这样还有一个好处是修改方便,因为当需要修改句子内容时,恰巧已经录过的句子中并没有这样的词语,则还必须请录音员重录,这不但增加了额外的开支,还由于时间过了较久,录音员的语调同原来相比肯定会有些变化,所以原来的录音只能全部作废,所有的一切都要从头开始。
综上所述,采用计算机来分析组合以及剪辑语音的好处是处理直观、修改方便,语句连续性强,合成的句子更具有人性化。
不仅如此,采用该开发平台,还可直观地看出每个语句的详细信息,包括:开始地址、结束地址、语句所用时间、语句所占用芯片行的段数等对使用该语音芯片时碰到的比较敏感的信息。
为此,设计整个开发平台的结构框图如图1所示。
系统工作方式如下:首先,通过传声器将相关的大段语句经计算机声卡录制成为*,way文件并保存,然后借助于语音处理软件如CoolEdit剪辑出需要的单词(或短句)并去掉头尾的空白,将剪辑过的单词(或短句)每段都单独另存为新的·.wav文件,并把它们全部放人一个单独目录。启动1SD编程烧录器上位机开发软件,选中所有的待录*.wav文件,并点“开始烧录”,所有过程将会自动完成。烧录结束后会有提示,并且自动记录一份工作信息表,包括工作时间、语音文件数、录音总时间、每一段语音在lSD芯片中的起始地址及结束地址,其占用时间等。有了这些数据,就可以较方便地修改甚至对某些地方重新录制。将录制过的芯片及各段语音的起始地址表交给其它下位机程序员,他们就可以利用单片机或DSP等控制器来随心所欲地开发相应的语音提示设备了。
4 -F位机软硬件
下位机硬件应包括信号调理部分和数据通信部分,前者将信号电平调整到lSD芯片允许的的范围,后者接收计算机发来的各种控制信息,如“开始烧录”信号、“段间停止”信号、“返回结束地址”信号、“放音试音”信号,通过编程器的微控制器完成所需任务。
下位机硬件框图设计如图2。
其中MAX232是电平转换芯片,它使计算机通过符合RS232协议的串口和符合TYL电平的单片机直接通信。准备录制时,电脑通过串口发出握手信号给单片机,单片机接到该信号作出响应,计算机接到该回答后将录音首地址发送给单片机,同时放音控件开始放音,信号由音频线输入到烧录器的信号接收端,经信号调整电路接至lSD芯片的录音管脚。单片机接到首地址后立刻发控制信息给1SD芯片,通知其开始录音。这样,就在上位机的协调下语音自动地烧录到了芯片。当该段语音录制完毕后,上位机发语音段结束信号,同时停止放音,单片机接收到该信号后,停止录音并读出结束地址,将其送回上位机。上位机读人该地址将其写入地址表以备查询。如果还有待录语音段的话,在上一语段的结束地址的基础上加1,作为新一段的开始地址,重复上述过程直至录音完毕。全部语音录制完毕后,上位机作出提示,让你选择放音按键,以测试录音效果。当按下该键时,上位机quot;依次放音“命令给单片机,单片机通知lSD芯片开始放音,ISD通过放音管脚将语音信号输出,经过功放芯片TDA2822M将功率放大后,通过扬声器发声,就可一段段地将刚录制的语音放出来。如有什么地方不满意,可通过地址表查出该段首地址,单独选择该段语音,将其首地址输入”起始地址“框,点击”开始录音“就可将该段语音重新录制一遍。
5上位机软件
语音编辑软件采用CoolEdit,它包含高品质的数字效果组件,可在任何声卡上进行64轨混音。上位机运行环境用可视化的编程软件Visual C++6.0来开发。
上位机运行软件应有以下功能
(1)通信功能。因为上位机必须发控制信号以及起始地址数据给下位机,而下位机也要发应答信号及结束地址数据给上位机,故该通信为双向通信。在此采用MSComm控件。使用串口通信控件进行通信,必须首先对串口进行初始化。初始化后,就可以调用MSComm控件的SetOutput()和Getlnput()函数来对串口进行读写了,具体的使用方法在微软的开发手册
MSDN中有详细介绍。
(2)放音控制功能。上位机必须有放音控制功能,以便根据需要来开始、停止声卡放音。并且因为需要程序自动地控制,所以要求放音与停止放音能由VC命令语句来编程控制,在此采用CActiveMovie3控件。ActiveMovie不仅是一个播放器,同时也是ActiveX套件中的一个控件,它可以用来播放媒体文件,它支持绝大部分目前通用的媒体格式,它可以播放Wave,Midi,Avi,MPEG,QuickTime Movie等格式文件,甚至还可以用它来看视盘节目。由于它还是个控件,所以可以在VB或VC的程序中调用它。对它的操作相当简单,只需提供要播放的文件名就可以用Run,Pause,Stop方法来播放、暂停和停止该媒体文件。
(3)保存数据功能。需要将各种工作信息(尤其是起始地址信息)保存到一个文本文件,以供查询。保存数据比较简单,直接调用现有的函数即可。
6总结
文中针对当前使用lSD系列语音芯片中存在的问题,提出并设计了一种开发ISD系列芯片的平台,它可方便地对声音信号进行编辑处理,选好待录信号后可自动地将这些语音段录入1SD芯片,烧录过程中以直观形式显示进度,完毕后以文本文件的方式给出每个语音段的起始地址和结束地址,方便利用该芯片做相应的语音提示或其它电路,因此具有较大的实用意义。
免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。