arecord -V mono -f cd /home/sound
VU 테이블 출력(예: )을 음파 대신 간단한 ASCII 테이블로 파일에 저장하고 싶습니다 . 즉, VU 미터 값을 1초마다 dB 단위로 저장해야 합니다. 명령줄에서 이 작업을 어떻게 수행할 수 있나요? 아니면 대신 사용할 수 있는 다른 소프트웨어가 있습니까 arecord
? 감사해요! !
답변1
Bash 쉘 스크립트를 만들어 VU 테이블의 표준 출력을 캡처할 수 있습니다.
#!/bin/bash
# redirect stdout to a text file
exec &> audio.info
# use -q so the contents of the text file are only vumeter data
arecord -q -f cd -V mono test.wav
# removes extra symbols except percentages,
# I'm sure this can be consolidated if needed
cat audio.info | sed 's/#//g' | sed 's/ //g' | sed 's/|//g' | sed 's/+//g' | sed 's/[^[:print:]]//g' > new.info
#resets stdout
exec &>/dev/tty
percents=$(cat new.info)
max="0";
#breaks up the values with '%' as the delimiter
IFS='%' read -ra values <<< $percents
for i in "${values[@]}"; do
if [ $i -gt $max ]
then
max=$i
fi
done
echo "maximum amplitude = $max"
The for loop will find the max amplitude during your recording, but you can replace this with
echo $i >> table.txt