动态音频标准化器

2021-05-07 03:23:25

Warning: Can only detect less than 5000 characters

需要一个挑战是,仅应用高斯平滑内核无法解决所有问题。那个' s因为平滑的内核不仅会使增加的增益因子平滑,而且还有下降!例如,如果是一个"响亮的"框架在&#34序列后立即跟随;安静"框架,平滑导致增益因子早期降低但缓慢。结果,&#34的过滤增益因子;响亮的"框架实际上可以转向高于其(本地)最大增益因子 - 这导致失真,如果不照顾!出于这个原因,动态音频标准化器另外应用A"最小"过滤器,即替换邻域内最小值的每个增益因子的过滤器。这是在高斯平滑内核之前完成的,以确保所有增益过渡将保持平滑。

以下示例显示了A&#34的结果;现实世界"通过动态音频标准化器算法处理的音频录制。图表显示了每个单独帧(蓝色)的最大局部增益因子以及最小过滤增益因子(绿色)和最终平滑的增益因子(橙色)。注意"平滑"最终增益因素的进展。同时,最大局部增益因子尽可能地接近。最后但并非最不重要注意,平滑的增益因子永远不会超过最大局部增益因子,这可以防止失真。

到目前为止,它已经讨论了如何"最佳"确定每个帧的增益因子。然而,由于每个帧包含大量样本 - 以44,100Hz的典型采样率,并且标准帧大小为500毫秒,我们每帧具有22,050个样本 - 它也需要推断每个单独样本的增益因子框架。当然,最简单的方法将对一定帧中的所有样本施加相同的增益因子。但这还将导致每个帧边界处的增益因子的突然变化,而增益因子在帧内保持完全恒定。如动态音频标准化器中实现的更好的方法正在插入每个样本增益因子。特别地,动态音频归一化器应用了直接线性插值,其用于计算来自增益因子G&#39的第n帧的样本的增益因子; [N-1],G' [n]和g' [n + 1] - 其中g' [k]表示k-th框架的增益因子。以下图表显示了如何从前面(G' [N-1],绿色),电流(G' [N],蓝色)和的增益因子中插值的每个样本增益因子(橙色)。后续(G' [n + 1],紫色)框架。

最后,以下波形视图说明了A&#34的体积如何;现实世界"音频录制已由动态音频归一致性化器协调。上图显示了未处理的原始录制,而下图显示由动态音频归一成符号器创建的输出。可以看出,&#34之间的大量体积变化;响亮的"和#34;安静"在原始录制中存在的零件已经纠正 - 在很大程度上 - 在输入输入的每个部分内的动态。此外,&#34中绝对没有剪切或失真;响亮的"部分。

注意:Windows二进制文件以压缩的ZIP格式提供。只需使用7-zip或类似的工具将所有文件解压缩到新/空目录。如果有疑问,Windows用户应该下载"静态"版本。它'它!

动态音频标准化器"核心"图书馆和CLI前端用普通的C ++ 11编写,因此除了符合C ++编译器之外,没有任何系统要求。目前,积极支持Microsoft Visual C ++编译器和GNU编译集合(GCC)。其他编译器也应该工作,但这不能保证。

为Windows和GNU / Linux平台提供预编译的二进制文件。 32位Windows二进制文件应该在Windows XP上工作(使用Service Pack 2)或任何更高版本(32位或64位),而64位Windows二进制文件要求" x64" Windows Vista版或任何稍后的64位Windows。 Linux二进制文件是提供一些流行的分布(最新"长期支持"版本发布时的版本)。那些Linux二进制文件也可以在其他分布上工作。因此,通常建议使用Linux用户从源代码编译动态音频归一符合子。

所有预编译的二进制文件都针对支持至少支持SSE2指令集的处理器进行了优化,因此需要SSE2的处理器(Pentium 4,Athlon 64或更高版本)。对于遗留处理器,您需要从来源编译动态音频归一成符号器和所有第三方库 - 使用适当的编译器设置。

动态音频归阵取决于一些第三方库。这些图书馆需要在运行时出现!如何获取所需的第三方库(如果尚未安装),则取决于操作系统。

对于Windows平台,版本包已包含所有必需的第三方库。我们提供单独的静态和DLL包。 "静态"二进制文件拥有内置的所有所需库(包括第三方库和C-Runtime),因此它们不依赖于任何单独的DLL文件。与此同时," dll"包包含动态音频标准化器&#34的单独DLL文件;核心"图书馆以及所需的第三方库和C-Runtime。如果你不明白这意味着什么,那么只需与"静态和#34;版本。如果您是程序员,您希望调用动态音频标准化器"核心"库来自您自己的程序,那么您需要与" DLL"版本。

对于Linux平台,版本包不包含任何第三方库。那个'因为,在Linux上,强烈建议通过包管理器安装这些库。通常,大多数所需的第三方库将安装在基于Linux的系统上,但有些可能需要明确安装。详细信息取决于特定的Linux分布和特定包管理器。我们在这里为Ubuntu,OpenSUSE和CentOS提供示例:

注意:程序包管理器存在一些额外的间接依赖项,该依赖项将由包管理器自动解决。

Brew Cask Install javabrew安装python3brew安装libsndfile mpg123brew安装ant pandoc wgetexport java_home = $(/ usr / libexec / java_home)make mode = no-gui

以下文件包含在动态音频标准化器版本包中(Windows," DLL"版本):

API-MS-Win- * - Microsoft Universal CRT RedistributableDynamicAudionorMalizer.h - 动态音频归一致性程序的标题文件LibraryDynamicAudionOrmalizer.Pas - Pascal包装器用于动态音频归一致性程序LibraryDynamicAudionormalizerAPI.dll - 动态音频标准化器核库(Shared)DynamAdautionormalizerApi.lib - 导入用于动态音频归一致性化器库的图书馆innamicaudionormalizerCli.exe - 动态音频归一rancalizer命令行ApplicationDynamicAudionormalizergui.exe - 动态音频归一成正变化程序日志查看器ApplicationDynamicAudionormalizerJni.jar - 动态音频归一致性程序的Java包装器LibraryNamicAudionizer.Dln - .NET包装器用于动态音频归一致性程序。 exe - sox二进制文件包括动态音频归一成正做effectyDynamicAudionOrmAlizervStervster.dll - 动态音频归一化器vst wrapper littureLibmpg123.dll - libmpg123库,用于读取mpeg audio fileslibsndfile-1.dll - libsndfile库,用于阅读/编写音频文件vsmp140.dll - Visual C ++ 2015运行时库RedistributablePthreadvc2.dll - POSIX线程库,用于线程ManagementQtcore4.dll-Qt库,用于创建图形用户interfacesqtgui4.dll - qt库,用于创建图形用户域仪Readme。 HTML - README FILEUCRTBASE.dll - Microsoft Universal CRT RedistributableVcruntime140.dll - Visual C ++ 2015运行时库可重新发行

注意:标准二进制文件是32位(x86),但在x64子文件夹中可以找到64位(AMD64 / EM64T)版本。

可以通过命令行界面(CLI)调用动态音频归阵者独立程序,该程序可以从命令提示符或自动(脚本)手动完成,例如,通过使用批处理文件。

请注意,输入文件(选项-i或-input)以及始终必须指定输出文件(选项-o或-Output),而所有其他参数都是可选的。但是要小心,将默默地覆盖现有的输出文件!

另请注意,动态音频标准化器使用Libsndfile进行输入/输出,因此广泛的文件格式(WAV,W64,FLAC,OGG / Vorbis,AIFF,AU / SND等)以及各种样本类型(从8种) -bit int到64位fp)。但是,Libsndfile无法读取MP2(MPEG音频层II)或MP3(MPEG音频层III)文件,因此LibMPG123将用于读取&#34的文件;看"像MP2或MP3数据。您可以指定-d选项以显式选择所需的解码器库。

默认情况下,动态音频归一符合程序程序将猜测来自指定输出文件的文件扩展名的输出文件格式。这可以通过使用-t选项覆盖。要创建FLAC文件,例如,您可以指定-t flac。

通过"生"支持PCM数据通过管道。指定文件名和#34; - "为了分别读取或写入STDIN或STDOUT。从STDIN读取时,您必须指定输入样本格式,通道计数和采样率!

有关所有可用选项的列表,请参阅下面的列表或运行dynamicaudionormalizer cli.exe - 从命令提示符中提示。此外,有关动态音频标准化器参数的更多详细信息,请参阅配置章节!

-i - Input< file>输入音频文件[必需] -d - lib< value>输入解码器库[默认值:自动检测] -o --output< file>输出音频文件[必需] -t --output-fmt< value>输出格式[默认值:自动检测] -u --output-bps< value>每个样本的输出位[默认值:如输入]

-f --frame-len< value>框架长度,以毫秒为单位[默认值:500] -g --gauss尺寸<值>高斯过滤器大小,在框架中[默认值:31] -p --peak< value>目标峰值幅度,0.1-1 [默认值:0.95] -m - max-gain<值>最大增益因子[默认值:10.00] -r --target-rms< value>目标RMS值[默认值:0.00] -N - 不耦合禁用通道耦合[默认值:ON] -C -CorRect-DC启用直流偏置校正[默认值:OFF] -b +间隔边界使用替代边界模式[默认值:关闭] -s --compress<值>压缩输入数据[默认值:0.00]

-v - 鼠标输出额外的诊断信息-L -log-file< file>创建日志文件-h - help print *此*帮助屏幕

- 投入比特<值>每个样品比特,例如' 16'或' 32' - 输入陈< value>频道数量,例如' 2'对于立体 - 输入速率<值>赫兹的采样率,例如赫兹。 ' 44100'

从STDIN读取输入(输入由FFMPEG通过管道提供)并将输出写入Wave文件:

ffmpeg.exe -i" moviemkv" -loglevel quiet -vn -f s16le -c:pcm_s16le - | DynamicAudionorMalizerCli.exe -i - - - - - 待 - 位16 - Input-Chan 2 - Input-Rate 48000 -O" Output.wav"

从波文件读取输入并将输出写入STDOUT(输出通过管道传递给FFMPEG):

DynamicautionormalizerCli.exe -i" Input.wav" -O - | ffmpeg.exe -loglevel quiet -f s16le -ar 44100 -ac 2 -i - -c:a libmp3lame -qscale:2" output.mp3"

作为动态音频归一实向命令行前端的替代方案,动态音频标准化器库也可以用作SOX(声音交换),多功能音频编辑器和转换器中的效果。

但请注意,标准SOX分布目前不支持动态音频归一归一化器。相反,需要一个特殊的修补SOX构建,该SOX具有启用的动态音频标准化器效果!

使用SOX时,可以通过添加" Dynaudnorm&#34来调用动态音频标准化器;对你的链条效果:

有关SOX命令行语法的详细信息,请参阅offical Sox文档,或简单地键入--help效果dynaudnorm,以使SOX打印可用选项列表。

此外,动态音频标准化器可用作FFMPEG中的音频滤波器,一个完整的跨平台解决方案,用于记录,转换和流音频和视频。感谢Paul B Mahol将动态音频归一批化器移植到FFMPEG。

由于动态音频标准化器已提交给官方ffmpeg代码库,因此您可以使用任何FFMPEG二进制文件。 只需抓住具有" Dynaudnorm&#34的最新的ffmpeg; 过滤器集成。 Windows用户可以在此处下载现成的FFMPEG二进制文件。 Linux用户从其分发包管理器安装FFMPEG或自行构建它。 如果您的分发包含的FFMPEG太旧,则在此查找最近的Linux二进制文件。 使用FFMPEG时,可以通过添加" dynaudnorm&#34来调用动态音频标准化器; 通过-AF开关过滤: 有关FFMPEG命令行语法的详细信息,请参阅FFMPEG文档,请参阅FFMPEG过滤指南,或键入ffmpeg.exe -h full | 更多有用于可用选项列表的。 VST插件界面技术由Steinberg Media Technologies GmbH。 VST是Steinberg Media Technologies GmbH的商标。 这 ......