background image

对录线连接即可。当选用本方式录音时,尽量将音源的音量调小(

R69 为输入音量调节电位

器),这样可以避免录音时语音信号失真而得到较好的音质。

 

  

2.1.3 驻极式话筒录音电路 

  驻极式话筒录音(

person MIC)电路如图 6 所示,其中 P24 为驻极式话筒。在该录音

电路中,只要对着录音口说话或播放原音就可以完成普通的现场录音。录音时,语音信号由
驻极式话筒输入,由于其转化成的电信号很微弱,为了提高信号信噪比,更好的抑制噪声
该电信号需先经过三极管

Q18 放大后再加到 ISD4004-16 芯片的反向模拟输入端 ANA_IN-。 

  

2.1.4 放音电路 

  本电路

[5]可以实现两种方式放音,喇叭(SPEAK)放音和耳机插口(AUDIO_OUT)

放音方式。由于语音芯片输出的语音信号很微弱,无法直接驱动扬声器,所以该信号需要通
过功率放大电路进行放大后再由扬声器发出清晰的声音,功率放大模块选用

LM386 功率放

大器。放音电路如图

7 所示,ISD4004 芯片的音频信号输出引脚为 AUDOUT。由于输出音频

信号里的直流分量若直接加在

LM386 芯片上会使 LM386 芯片饱和而不能发出声音,所以

要先经过电容

C38 隔直流。图中的 R70 是输出音量控制电位器,在 1 脚和 8 脚间接电容 C47

是为了将电压增益调至任意值,如图

7,此时电压增益为 200。本设计中喇叭放音方式选用

SPEAK 是阻值为 8 欧,功率为 0.5W 的喇叭,经过多次测试,音质很好。 

  

2.2 语音系统的软件设计 

  语音系统程序主要包括

ISD4004 初始化、SPI 通信、录音和放音子程序。其功能是使系统

实现实时、精确的录音和播音,并且容易操作,易于批量生产,语音播报系统总流程如图

8

所示。

 

  

2.2.1 SPI 通信初始化 

  串行外设接口

SPI 允许 MC9S12DG128 和 ISD4004 进行高速的同步数据传输从而完成

语音播报。启用

SPI 通信时,需先对 SPI 控制寄存器的 SPI 使能位、主/从选择位、数据次序位

等进行设置。

 

  

2.2.2 录音和放音子程序 

  在本程序中可实现两种方式录音和放音:分段录放音和一次性录放音。

ISD4004 的初始

地址为

0X0000,地址的计算方法如下:ISD4004-16 录音时间为 16min 即 960s,根据 4004

性能,

960s 被分为 2400 个地址,则每个地址的分辨率为 960s/2400=0.4s,则有以下关系存

在:

   add_length[ i ]=[ T[ i ]/0.4 ] i

∈[1,2399],T[ i ]∈[0,960] 

  

add[ i+1 ]= add[ i ] + add_length[ i ] 

  其中,

[T[ i ]/0.4 ]表示的是大于 T[ i ]/0.4 的最小整数,T[ i ]为录第 i 段语音

所需的秒数,

add_length[ i ]为第 i 段语音所占用的地址数,add[ i ]为第 i 段语音的起

始地址。

 

  (

1)分段录音、分段放音:假设要对第 i+1 段语音进行录音,则要确定录音起始地址。

先估算第

i 段录音时间 T(要求比实际录音时间稍长),计算出 T/0.4 的值,若出现小数则

往上取最小整值,再把该整值加至第

i 段起始地址,加出的 16 进制数就是本次录音起始地

址,最后调用

rec(add)进行录音即可,如此循环直至录音完毕。放音时直接根据录音起始

地址调用

play(add)即可实现播放任意段音。 

  (

2)一次性录音,分段放音:首先确定录音起始地址,再调用 rec(add)一次性录音

完毕,要求每句话之间有较明显的停顿。第一次放音时,首先测出第一句话的放音时间

T

(要求比实际录音时间长,但不得长于

0.4s),然后调用 play(add)进行放音,经时间 T

后停止放音;第二次放音时,亦先确定放音地址,放音地址的确定如下:先测出前一次
(这里即第一次)放音和停顿总时间

T1,计算 T1/0.4 的值,若出现小数则往上取最小整值,

则( 

[T1/0.4]+add )就是第二次放音地址,依此类推,循环下去,目前所测试系统语音