1 个文件中有 5 个单独的音频通道
5 individual audio channels in 1 file
不知道把这个问题放在哪里,所以我提前道歉。
我有一个测试设置,在一个房间里有 5 个扬声器,周围有一对麦克风。我正在从扬声器的不同角度测试麦克风的灵敏度。我有一个 amp/mixer 连接到它们并控制各个频道。
我想将 5 个声道的音频放在一个文件中。通过适当的延迟,我希望一次只播放一个扬声器。所以通道 1 连接到扬声器 1,通道 2 连接到扬声器 2,依此类推。
我一直在使用 Audacity 创建文件。然而,频道 4 和 5 在两个扬声器而不是一个扬声器中播放。并且第 3 频道听起来很微弱。我想这是因为 5.1 标准,其中通道 4/5 必须解决 'rear-left/right' 而通道 3 用于 subs.
是否有一种文件格式可以让我将纯独立的通道输入扬声器?我不限于文件格式,但到目前为止我已经尝试过 wav、ogg 和 flac。
在 Audacity 中,您必须选中 Import/Export section of the preferences 中的 'Use custom mix' 单选按钮。这将允许您导出多通道文件,并手动将曲目分配给通道。
除此之外,普通的旧 .wav 可以正常工作。
但您也可以使用 SoX 以更自动化的方式创建文件。
您可以手动将五个不同的文件合并(或 'merge',如文档中所述)到一个单一的五通道文件中,如下所示:
sox -M chan1.wav chan2.wav chan3.wav chan4.wav chan5.wav multi.wav
为了自动化这个过程,我整理了一个简短的 Bash 例程来生成带有交错测试音的多通道文件:
NUM=5 # Number of channels
LEN=2 # Length of each test tone, in seconds
OVL=0.5 # Overlap between test tones, in seconds
# A one-channel base file containing simple white noise.
# faded at both end with a quarter wave envelope to ensure
# smooth equal power transitions
sox -n -b 24 -c 1 out.wav synth $LEN whitenoise fade q $OVL -0 $OVL
# Instead of white noise you can for example make a 1kHz tone
# like this:
# sox -n -b 24 -c 1 out.wav synth $LEN sine 1k fade q $OVL -0 $OVL
# Or a sweep from 10Hz to 10kHz like this:
# sox -n -b 24 -c 1 out.wav synth $LEN sine 10-10k fade q $OVL -0 $OVL
# Produces a sequence of the number of seconds each channel
# shall be padded with
SEQ=$(for ((i=1; i<=NUM; i++))
do
echo "$i 1 - [$LEN $OVL -]x * p" | dc # reverse-Polish arithmetic
done)
echo $SEQ
# Padding the base file to various degrees and saving them separately
for j in $SEQ
do
sox -c 1 out.wav outpad${j}.wav pad $j
done
# Finding the just-produced individual files
FIL=$(ls | grep ^outpad)
# Merging the individual files into a single multi-channel file
sox -M $FIL multi.wav
rm $FIL # removing the individual files
# Producing a multi-channel waveform plot
ffmpeg -i multi.wav -y -filter_complex "showwavespic=s=2400x900:split_channels=1" -frames:v 1 waveform.png
# displaying the waveform plot
open waveform.png
正如波形图清楚显示的那样,结果由一个包含五个通道的文件组成,每个通道具有相同的内容,只是及时移动了一些:
更多关于使用 dc
的反波兰算法:http://wiki.bash-hackers.org/howto/calculate-dc
更多关于使用 ffmpeg
显示波形的信息:https://trac.ffmpeg.org/wiki/Waveform
不知道把这个问题放在哪里,所以我提前道歉。
我有一个测试设置,在一个房间里有 5 个扬声器,周围有一对麦克风。我正在从扬声器的不同角度测试麦克风的灵敏度。我有一个 amp/mixer 连接到它们并控制各个频道。
我想将 5 个声道的音频放在一个文件中。通过适当的延迟,我希望一次只播放一个扬声器。所以通道 1 连接到扬声器 1,通道 2 连接到扬声器 2,依此类推。
我一直在使用 Audacity 创建文件。然而,频道 4 和 5 在两个扬声器而不是一个扬声器中播放。并且第 3 频道听起来很微弱。我想这是因为 5.1 标准,其中通道 4/5 必须解决 'rear-left/right' 而通道 3 用于 subs.
是否有一种文件格式可以让我将纯独立的通道输入扬声器?我不限于文件格式,但到目前为止我已经尝试过 wav、ogg 和 flac。
在 Audacity 中,您必须选中 Import/Export section of the preferences 中的 'Use custom mix' 单选按钮。这将允许您导出多通道文件,并手动将曲目分配给通道。
除此之外,普通的旧 .wav 可以正常工作。
但您也可以使用 SoX 以更自动化的方式创建文件。
您可以手动将五个不同的文件合并(或 'merge',如文档中所述)到一个单一的五通道文件中,如下所示:
sox -M chan1.wav chan2.wav chan3.wav chan4.wav chan5.wav multi.wav
为了自动化这个过程,我整理了一个简短的 Bash 例程来生成带有交错测试音的多通道文件:
NUM=5 # Number of channels
LEN=2 # Length of each test tone, in seconds
OVL=0.5 # Overlap between test tones, in seconds
# A one-channel base file containing simple white noise.
# faded at both end with a quarter wave envelope to ensure
# smooth equal power transitions
sox -n -b 24 -c 1 out.wav synth $LEN whitenoise fade q $OVL -0 $OVL
# Instead of white noise you can for example make a 1kHz tone
# like this:
# sox -n -b 24 -c 1 out.wav synth $LEN sine 1k fade q $OVL -0 $OVL
# Or a sweep from 10Hz to 10kHz like this:
# sox -n -b 24 -c 1 out.wav synth $LEN sine 10-10k fade q $OVL -0 $OVL
# Produces a sequence of the number of seconds each channel
# shall be padded with
SEQ=$(for ((i=1; i<=NUM; i++))
do
echo "$i 1 - [$LEN $OVL -]x * p" | dc # reverse-Polish arithmetic
done)
echo $SEQ
# Padding the base file to various degrees and saving them separately
for j in $SEQ
do
sox -c 1 out.wav outpad${j}.wav pad $j
done
# Finding the just-produced individual files
FIL=$(ls | grep ^outpad)
# Merging the individual files into a single multi-channel file
sox -M $FIL multi.wav
rm $FIL # removing the individual files
# Producing a multi-channel waveform plot
ffmpeg -i multi.wav -y -filter_complex "showwavespic=s=2400x900:split_channels=1" -frames:v 1 waveform.png
# displaying the waveform plot
open waveform.png
正如波形图清楚显示的那样,结果由一个包含五个通道的文件组成,每个通道具有相同的内容,只是及时移动了一些:
更多关于使用 dc
的反波兰算法:http://wiki.bash-hackers.org/howto/calculate-dc
更多关于使用 ffmpeg
显示波形的信息:https://trac.ffmpeg.org/wiki/Waveform