Linux下的音频处理

五 8th, 2010

最近下载了很多音乐文件,为了统一管理进行了很多转换、分割的操作,感觉Linux下做这些简单的音频处理还是很方便的。下面对这些操作做一个小小的总结。

基于cue文件的音频分割

网上能下载到的质量较高的音乐文件都是从CD直接抓轨得到的APE、FLAC、TTA甚至是TAK格式的无损压缩文件,通过一个cue列表指定音轨的名称和时间段。Linux下的播放器普遍对cue没有很好的支持,因此把完整的CD镜像分割为单个的文件不失为简单的变通方法。

cue文件的编码必须是UTF-8格式,但是喜爱日本动漫、游戏音乐的朋友会发现很多时候打开cue文件后发现音轨的标题都是乱码,其实这是因为这些cue文件采用了Shift-JIS编码。用iconv命令可以很简单的进行编码的转换:

$ iconv -c -f shift-jis -t utf8 CDImage.cue -o CDImage.utf8.cue

这里有个-c参数是为了让iconv读到一些奇怪的字符时直接忽略,因为某些cue文件过于诡异了。

转换好cue文件后通过shntool分割文件,以APE格式的CD镜像为例:

$ shntool split -t "%n.%t" -i ape -o flac -f CDImage.utf8.cue CDImage.ape

这里的-t “%n.%t”指定了输出文件的文件名由音轨编号%n和标题%t组成,-i指定输入文件格式为APE,-o指定输出文件格式为FLAC,-f指定了cue文件。

在Archlinux下读取APE和TTA格式的音频文件需要通过AUR安装mac-port和ttaenc,而处理TAK文件时则比较麻烦,需要通过wine来运行Takc.exe。这个Takc.exe可以在这里下载。运行Takc.exe先将tak文件解压为wav文件:

$ wine Takc.exe -d CDImage.tak CDImage.wav

然后运行shntool分轨:

$ shntool split -t "%n.%t" -i wav -o flac -f CDImage.utf8.cue  CDImage.wav

音频格式的转换

音频格式之间的转换通过wav格式来中转最为简单,各种常见无损格式的解压命令如下:

$ mac -d Music.ape

$ flac -d Music.flac

$ ttaenc -d Music.tta

相应的,从wav格式转化为各种常见格式的命令如下:

$ mac "Music.wav" "Music.ape"

$ flac Music.wav

$ ttaenc Music.wav

$ lame Music.wav

$ oggenc Music.wav

$ faac -w Music.wav
目前还没有任何评论.