레코드에서 VU 테이블 값을 텍스트로 추출

레코드에서 VU 테이블 값을 텍스트로 추출

arecord -V mono -f cd /home/soundVU 테이블 출력(예: )을 음파 대신 간단한 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 

관련 정보