对录线连接即可。当选用本方式录音时,尽量将音源的音量调小(
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 )就是第二次放音地址,依此类推,循环下去,目前所测试系统语音