Dante网络音频技术是基于IP层的,可能有人会问,基于IP传输音频我们很多年前就有啊,它又有什么优势呢?我们这里引用GY/T 304-2016《高性能流化音频在IP网络上的互操作性规范》标准中的一段话来回答这个问题。”高性能流化音频区别于低性能流化音频(如互联网广播和IP电话)之处是运行前者的设备或应用可共用一套精确的统一时钟。通过时钟的统一,网络中的任何一台接收器都能与其他的接收器同步回放。通过时钟的统一,发送器和接收器之间的延时固定并可测量。统一时钟确保所有流的采样速率和还原速率相同。接收器更易于合成具有相同采样率的音频数据流。这一特性对网络音频设备的高效运行特别关键,如数字调音台“。这里说明了一个问题,不稳定的网络延时以及不匹配的晶振时钟都会给网络音频传输带来扰动,在IEEE1588出现之前,解决这个问题通常有两种方法(1)通过动态的缓冲区管理来强制同步,(2)使用软件采样率转换。下面我们来讨论一下这两种方法:第一种动态缓冲区管理技术,当网络延时出现扰动或者因为采样晶振误差积累导致录音端和播放端的不同步时,缓冲区就会出现满溢出或缓冲区空的问题。为了解决这个问题,我们会在程序中监测缓冲区长度变化,然后通过丢弃某些采样点或者插入空采样点来进行强制同步,这就是动态缓冲区管理技术。动态缓冲区管理解决了网络音频系统长期运行带来的不同步问题,代价就是会偶尔出现声音毛刺或声音畸变,这是由音频采样点不连续导致的。
第二种软件采样率转换技术,为了解决动态缓冲区管理技术带来的声音毛刺和畸变问题,我们可以声音4倍或更高的采样率对声音进行重新采样,然后进行滤波处理(采样率转换器的原理)来进行波形平滑。理论上来说这种采样率转换器技术可以解决采样率的适配问题,但是当采样率差异较小的时候,采样率转换的实际工作效果就不太理想了。
IEEE1588-V1/V2中规定的精确时间协议(PTP),它可以通过数据包交互应答,计算出各网络终端之间的时间差和网络交换过程中的延时量。各个终端内部具有可以动态调节的频率发生器,根据时钟偏差调整之后的晶体振荡器,达到了网络同步状态,周期性的执行同步校正,从而确保本机绝对时间与网络其他终端之间的一致。媒体时钟与绝对时间有固定的换算关系,绝对时间校准之后,媒体时钟也自动完成同步校正,从而实现了整个媒体网络内的采样时钟一致。当采样时钟一致之后,只要在媒体时钟容忍的限度以内(如Dante最大延时6ms,最小延时0.15ms),网络延时或采样的波动都不会导致音频播放端的缓冲区溢出或空的问题,从而确保采样点连续播放,实现高质量的音频网络传输。
Dante默认使用IEEE1588-V1版本,AES67兼容性网络协议要求支持IEEE1588V2版本,因此在使用Dante的AES67功能时,Dante内部通过边界时钟的方式,进行了V1和V2时钟协议版本的转换,从而保证与其他AES67设备之间的时钟同步。在一个Dante系统中,设备会自动推选出一个GrandMaster(主时钟)设备,由它定时发出时钟广播包,其他网络中断保持与它的同步。如果当前的GrandMaster终端不再是最优时钟算法推选出来的终端,那么它自动会变成从设备与新的被推选出来的GrandMaster保持同步。最优时钟算法每秒运行2-4次,确保整个网络系统内始终具有GrandMaster时钟。