本文的技术原理解释与脚本编写由 AI 辅助生成,但核心方案、脚本代码及压制测试均由博主本人实际验证并跑通。
前言
什么是 ORT?
ORT(Overtone Reconstruction Technology,泛音重构技术)是由日本哥伦比亚(Nippon Columbia)唱片公司开发的一种专业的音频升频与高解析度(Hi-Res)重制技术。
简单来说,它是一种通过算法预测并重建高频倍音(泛音 / overtones) 的技术,主要用于提升数字音频的空间感、透明度、空气感和整体听感,让声音听起来更接近模拟母带或现场的自然感。
ORT 的主要特点
- 针对数字录音中容易丢失的高频泛音部分进行智能补回和再构建
- 不是简单EQ提升高频,而是基于音乐信号本身的谐波结构进行重建
- 日本コロムビアマスタリングスタジオ的招牌技术之一
- 常用于高解析度音源(Hi-Res)、SACD、96kHz/24bit等母带制作
对于本家制作人们而言,收藏本家的 Hi-Res 音源(通常为 24Bit/96kHz 的 FLAC 格式)是常规操作。
然而,当我们需要将这些高质量音频导入移动设备、进行日常通勤聆听时,往往会面临一系列体验上的技术痛点。
本文将从移动端音频处理的技术角度,探讨如何利用 Apple CoreAudio 引擎(qaac)对 Hi-Res 音频进行降维压制,并分享我已经处理好的优化版音频库,以及背后的自动化处理脚本。
移动端听 Hi-Res 的痛点分析
在桌面端搭配独立的 DAC 与耳放,Hi-Res 音频可以发挥其最大价值。但在移动端,直接存放和播放 24Bit/96kHz 的 FLAC 存在以下问题:
- 存储空间占用极大:一首 4 分钟左右的 24/96 FLAC 文件体积通常在 100MB 到 150MB 之间。对于几百首的偶像大师曲库,直接拷入手机会迅速消耗宝贵的存储空间。
- 硬件解码支持与功耗:大多数移动端 SoC(如高通骁龙、联发科天玑)在处理极高规格的无损音频时,往往需要调用 CPU 进行软件解码(Soft Decode)。这不仅会绕开系统底层的低功耗音频 DSP,还会显著增加手机发热量与耗电量。
- 蓝牙传输协议的瓶颈:目前主流的 TWS 真无线耳机,其基础且最稳定的传输协议依然是 AAC(iOS 设备更是强制锁定 AAC)。如果你在手机上播放 Hi-Res 并通过蓝牙输出,系统底层依然会进行一次实时的有损重采样和编码。与其让手机在后台进行不可控的实时劣化,不如预先提供高质量的编码源。
为什么选择 qaac (Apple AAC)?
为了解决上述问题,对音频进行重编码是必经之路。在众多有损编码器中,我最终选择了 qaac(调用 iTunes 底层的 CoreAudioToolbox.dll)。
- 音质的业界标杆:在 Hydrogenaudio 等专业音频社区的历次盲听测试中,Apple AAC-LC 编码器始终稳居榜首。在同等码率下,它对高频细节的保留和声场还原远优于 Android 系统默认的 FDK AAC 或开源的 FAAC。
- 完美的硬件解码兼容性:AAC-LC 是目前移动端硬件解码支持最完善的格式。无论是 iOS 还是 Android 设备,均可调用底层 DSP 进行极低功耗的硬解播放,大幅提升手机续航。
- 参数设置:本次压制采用了
TVBR q109(True VBR 动态码率)参数。该参数下的平均码率约为 250~280 kbps。
苹果认为,在频谱分析和实际听感上,已达到人类听觉的 “透明(Transparent)” 阈值,足以应对绝大多数通勤和日常聆听场景。
在此之前我考虑了使用 opus 编码,但该容器对于封面和元数据的适配仍存在较大问题,最后放弃了这个选项。
那压制完 AAC 了 ORT 的意义在哪
完全是像 720P 的屏幕看 8K 电影一样,压制后的音频无法完全还原 ORT 的细节表现。补充 19kHz - 22kHz 的意义就没了,但是我认为,ORT 的核心价值并不完全在于高频的细节表现,而是整体的空间感、层次感和动态范围的提升。整体的听感是母带师重新调过的,会比原版 CD 好一些。
说句暴论的话,其实 Hi-Res 大部分情况下还是靠脑放(
不如用好的有损编码器,节省下体积,我已经买不起SSD了(
脚本功能简介
为了保证元数据(Metadata)的绝对完整,本次压制没有使用简单的第三方格式转换工具,而是基于 FFmpeg + qaac 构建了标准化的处理流水线:
- 解码与提取:使用 FFmpeg 将 FLAC 无损解码为临时 WAV 文件,避免管道传输带来的潜在错误。
- 核心编码:通过 qaac64.exe 将 WAV 编码为纯净的 M4A (AAC-LC) 音频流。
- 元数据回填:利用 FFmpeg 的
-map_metadata与-disposition:v attached_pic参数,将原版 FLAC 中的高清封面、专辑名、艺术家、音轨号等所有标签信息,平移至最终的 M4A 容器中。
经过这套流程处理后的音频,在任何主流本地播放器(如 椒盐音乐、Poweramp、海贝音乐等)中均能完美展示封面与标签,无乱码问题。
资源下载与分享
为了方便各位同担,我已经将本家 Hi-Res 曲库按照上述标准全部压制完毕。
- 收录内容:曲目列表详见上次发布的 Hi-Res 合集(包含所有 765AS 的 Hi-Res 音源)
- 压制规格:M4A 封装 / AAC-LC 编码 / 48kHz / ~270kbps (TVBR q109)
- 下载链接:百度网盘 [SerinaP] 765PRO ALLSTARS COLLECTION [qAAC_TVBR q109].zip(提取码:imas)
注:本资源仅供同好交流与移动端试听测试使用,请支持并购买正版音源。
附:自动化压制脚本
# ==========================================
# 基于 qaac 的音频批量压制脚本 (Apple AAC)
# 依赖环境: FFmpeg, qaac64.exe, Apple Application Support
# ==========================================
# 强制终端使用 UTF-8 避免乱码
chcp 65001 | Out-Null
[Console]::OutputEncoding = [System.Text.Encoding]::UTF8
$OutputEncoding = [System.Text.Encoding]::UTF8
# 路径配置 (请根据实际情况修改)
$SourceDir = "D:\Music\Source_FLAC"
$DestDir = "D:\Music\Export_M4A"
$QaacExe = "C:\Bin\ffmpeg\qaac64.exe"
# 检查环境
if (-not (Test-Path -LiteralPath $QaacExe)) {
Write-Host "❌ 找不到 qaac64.exe!" -ForegroundColor Red; return
}
$FlacFiles = Get-ChildItem -LiteralPath $SourceDir -Filter "*.flac" -Recurse
$Total = $FlacFiles.Count
if ($Total -eq 0) { Write-Host "❌ 找不到 FLAC 文件!"; return }
Write-Host "✅ 找到 $Total 个 FLAC 文件,开始使用 Apple CoreAudio 引擎批量压制...`n" -ForegroundColor Green
$Counter = 0
foreach ($file in $FlacFiles) {
$Counter++
# 计算相对路径和目标路径
$relPath = $file.FullName.Substring($SourceDir.Length).TrimStart('\')
$targetFilePath = Join-Path -Path $DestDir -ChildPath $relPath
$targetFilePath = [System.IO.Path]::ChangeExtension($targetFilePath, ".m4a")
$targetFolder = Split-Path -Path $targetFilePath -Parent
Write-Host "[$Counter/$Total] 🍎 正在压制: $($file.Name) " -NoNewline -ForegroundColor Cyan
# 自动创建目标子文件夹
if (-not (Test-Path -LiteralPath $targetFolder)) {
New-Item -ItemType Directory -Path $targetFolder -Force | Out-Null
}
# 跳过已存在的文件(断点续传)
if (Test-Path -LiteralPath $targetFilePath) {
Write-Host "⏩ 已存在,跳过" -ForegroundColor DarkGray
continue
}
# 使用固定纯英文临时文件名,避开所有路径解析坑
$tempWav = Join-Path -Path $targetFolder -ChildPath "temp_audio.wav"
$tempM4a = Join-Path -Path $targetFolder -ChildPath "temp_audio.m4a"
if (Test-Path -LiteralPath $tempWav) { Remove-Item -LiteralPath $tempWav -Force }
if (Test-Path -LiteralPath $tempM4a) { Remove-Item -LiteralPath $tempM4a -Force }
# [步骤1] 提取 WAV (静默模式)
$ffmpegArgs1 = @("-y", "-hide_banner", "-loglevel", "error", "-i", $file.FullName, "-vn", $tempWav)
& "ffmpeg" @ffmpegArgs1
if (-not (Test-Path -LiteralPath $tempWav)) {
Write-Host "❌ WAV提取失败" -ForegroundColor Red; continue
}
# [步骤2] qaac 压制 (-s 参数让它保持静默,不刷屏)
$qaacArgs = @("-s", "-V", "109", $tempWav, "-o", $tempM4a)
& $QaacExe @qaacArgs
if (-not (Test-Path -LiteralPath $tempM4a)) {
Write-Host "❌ 压制失败" -ForegroundColor Red; continue
}
# [步骤3] 回填标签与封面 (静默模式)
$ffmpegArgs3 = @("-y", "-hide_banner", "-loglevel", "error", "-i", $tempM4a, "-i", $file.FullName, "-map", "0:a", "-map", "1:v?", "-map_metadata", "1", "-c", "copy", "-disposition:v", "attached_pic", $targetFilePath)
& "ffmpeg" @ffmpegArgs3
# 验证最终结果 (使用 -LiteralPath 避免方括号Bug)
if (Test-Path -LiteralPath $targetFilePath) {
Write-Host "✔️ 完成" -ForegroundColor Green
# 成功后清理临时文件
Remove-Item -LiteralPath $tempWav -Force
Remove-Item -LiteralPath $tempM4a -Force
} else {
Write-Host "❌ 封装失败" -ForegroundColor Red
}
}
Write-Host "`n🎉 所有任务处理完毕!赶快把音乐导进手机里听听看吧!" -ForegroundColor Green
希望这套方案能为各位制作人带来更好的移动端听歌体验。
これからも、アイマスですよ、アイマス!