MPEG-4音频 (下) 二. 合成声音 MPEG-4的译码器支持乐谱驱动合成(Score Driven Synthesis)和文语转换(TTS,text to speech) 合成。乐谱驱动合成是在乐谱文件或者描述文件控制下生成声音,乐谱文件是按时间顺序组织的一系列调用乐器的命令,合成乐音传输的是乐谱而不是声音波形本身或者声音参数,因此它的数据率可以相当低。随着科学技术突飞猛进的发展,尤其是网络技术的迅速崛起和飞速发展,文-语转换系统在人类社会生活中有着越来越广泛的应用前景,已经逐渐变成相当普遍的接口,并且在各种多媒体应用领域开始扮演重要的角色。TTS编码器的输入可以是文本或者带有韵律参数的文本,编码器的输出数据率可以在200 bps~1.2 kbps范围里。 (一)乐谱驱动合成 乐谱驱动合成又称为音乐合成。在这种方式中,解码是通过一种特殊的合成语言驱动的,这种语言称为结构化音频乐队语言(SAOL ,Structured Audio Orchestra Language),并且已经标准化成为MPEG-4的一部分。SAOL被用于定义一个有“乐器(instruments)”组成的“乐队(orchestra)”(或称为合成器,Synthesizer),这些乐器不是固定在终端设备中,而是从位流(bitstream)里下载下来,用于产生和处理控制数据。一个乐器是一个小的信号处理原语网络,可以模拟一些特定的声音,例如一个真正音乐乐器的声音。这种信号处理网络可以用硬件或软件实现,既包括声音的产生和处理,也包括预存储声音的管理。 下面是一个用SAOL定义的乐队例子,定义一个可以产生复杂的婉转声调的乐器beep,可以在一个结构化音频会话中使用: global { srate 32000; krate 1000;} instr beep(pitch, amp) { asig out; ksig env; table sound(harm,2048,1,0.5,0,0.2); env = kline(0,0.1,amp,dur-0.1,0); out = oscil(sound,pitch) * amp; output(out);}MPEG-4并不标准化合成的具体方法,而是标准化描述合成方法的方式。任何现存的或将来开发的声音合成方法都可用SAOL描述,包括波表(wave table),频率调制(FM),添加(additive),物理造型(physical-modeling),粒状合成(granular synthesis),以及这些方法的非参数的混合等。 每一个位流以一个SAOL乐队开始,乐队提供在该会话中需要的乐器。结构化音频位流的流访问单元(streaming access units)包含指令,这些指令规定应如何使用头部中描述的乐器来产生声音。指令用另一种称为结构化音频乐谱语言(SASL, Structured Audio Score Language)来描述。 下面是一个这种指令集或乐谱(Score)的例子: 0.0 beep 1.0 440 0.51.0 beep 2.0 220 0.22.0 beep 1.0 264 0.53.0 beep 1.0 440 0.54.0 end这个乐谱使用前面定义的乐器beep演奏4个音符(notes),对应的音符见 . Z* p/ o& D4 j* B% W I
/ j6 F# L, j' _0 I3 `. _( Z5 K一个乐谱是命令的时间序列集,它在规定时刻调用若干乐器使他们的输出产生一个完整的演奏或产生声音效果。用SASL描写的乐谱被下载下来,可用来产生新的声音,并且还包括附加的修改现存声音的控制信息。乐谱描写使作曲者能更精细地控制最后合成的声音。对于那些不需要这种精细控制的合成过程,可使用MIDI协议控制乐器。 仔细的控制与定制的乐器定义相结合,可以使产生的声音从简单的音频效果如脚步声或关门声,到仿真自然声音如下雨或传统乐器演奏的音乐,到完全合成的声音以形成复杂音频效果或未来派音乐。 解码过程与编码过程有区别。图05-05-18给出了一种方案。
2 o1 A9 ^4 `% b7 G9 p* W: H9 K |