[Linux] 录音脚本(内录+外录)
把脚本添加到系统快捷键, 第一次调用录音, 再次调用结束录音
#!/usr/bin/env bash
# 录音, 再次调用结束录音并转写
parent_path="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)"
PID_FILE=/tmp/_my_sound_recording.pid
if [ -f "$PID_FILE" ]; then
source "$PID_FILE"
kill 15 "$pid" &
kill 15 "$sys_pid"
rm -f "$PID_FILE"
sleep 1
file_dir="$(dirname $file)"
mix_file_name="$datetime"
mix_file="${file_dir}/${mix_file_name}.wav"
start=$(date +%s)
notify-send -e -a "$0" "提示" "开始转写"
# 混音
ffmpeg -i "$file" -i "$sys_file" -filter_complex "[0:a][1:a]amix=inputs=2:duration=longest[a]" -map "[a]" "$mix_file"
# 转写
#"$parent_path"/fun_stt "$mix_file" --out-file="${file_dir}/${mix_file_name}.txt"
end=$(date +%s)
runtime=$((end-start))
notify-send -e -a "$0" "提示" "转写完成, 耗时${runtime}秒"
else
today="$(date +"%Y-%m-%d")"
datetime="$(date +"%Y-%m-%d_%H:%M:%S")"
record_dir="$HOME/Documents/sound_record/$today"
record_file="${record_dir}/${datetime}_mic.wav"
record_sys_file="${record_dir}/${datetime}_sys.wav"
notify-send -e -a "$0" "提示" "再次按下相同快捷键以结束"
mkdir -p "$record_dir"
arecord -f cd "$record_file" &
record_pid=$!
ffmpeg -f pulse -i default.monitor "$record_sys_file" &
record_sys_pid=$!
cat << EOF > "$PID_FILE"
pid=$record_pid
sys_pid=$record_sys_pid
file="$record_file"
sys_file="$record_sys_file"
datetime="$datetime"
EOF
fi