CRIWARE Unity Plugin Manual  Last Updated: 2024-07-12
关于Voice

什么是Voice?

Voice是音频播放最基本的对象。
执行数据读取、音频解码、发声处理等。
指示开始播放后,从Voice池分配Voice,执行实际的播放。
需要使用一个Voice播放一个波形数据。 应用程序可同时播放的波形数据数量受Voice数量限制。

adx2u_keys_ADX_A_01.png


虚拟Voice(Virtual Voice)

指定Voice数量

可以在创建Voice池时指定Voice数量,并能够在应用程序端自由控制最大同时发声数。
但由于内存大小和CPU负荷也会与使用的Voice数量成比例增加,因此必须将Voice数量压缩到应用程序允许的范围。
此外,在Voice使用硬件Voice的平台中,创建的Voice数量不能超出硬件限制。

什么是虚拟Voice?

除Voice外,CRI Atom运行库还使用名为“虚拟Voice”的虚拟Voice对象。
虚拟Voice执行参数管理、播放时间管理,是管理用于音频输出的Voice的对象。

通常,虚拟Voice与Voice成对运行,用户不需要知道虚拟Voice存在。
但其实也可以通过更改Voice分配方式,使用虚拟Voice作为没有Voice的虚拟声源。

虚拟Voice的预设动作

预设状态下,CRI Atom库将虚拟Voice和Voice设为一组执行播放。
例如,为Player设置音频数据,执行播放函数后,Player只分配需要的数量的虚拟Voice和Voice。
此时,如果可以分配虚拟Voice和Voice,则播放音频,而只要其中一个不能分配,则设置的数据不会发声。

将虚拟Voice用作虚拟声源

將分配Voice指定为“将虚拟Voice用作虚拟声源”,则即使Player在播放开始时无法分配Voice,也可以只使用虚拟Voice开始播放音频。
由于无法分配Voice,因此不会执行发声处理,而会通过虚拟Voice执行参数更改记录和播放位置管理。
此外,虚拟Voice在播放期间监控Voice有无空闲,并在有空闲Voice时重新获取Voice。
因此,即使在播放开始时无法分配Voice或在播放期间Voice因优先级控制被抢占,只要之后有空闲Voice,就能够恢复播放。