arecord flac 格式

arecord flac 格式

我正在使用使用 google 语音转文本 api 的脚本。该 api 需要 flac 编码文件,因此脚本的录制部分如下所示:

arecord -q -t wav -d 0 -f S16_LE -r 16000 | flac - -f --best --sample-rate 16000 -s -o "$TEMP_FILE"

此命令将一直记录直到用户使用 ctrl-c 退出,并且 wav 记录格式应通过管道传输到 flac 程序以 flac 格式输出,然后脚本应继续。

我遇到的问题是按 ctrl-c 会完全结束脚本并切断部分音频(flac 文件仍输出)。如果我不使用管道运行脚本:

arecord -q -t wav -d 0 -f S16_LE -r 16000 some.wav

然后按 ctrl-c 只会结束录制并继续执行脚本。

我该如何修复这个问题,以便 ctrl-c 仅停止 arecord 命令并允许脚本的其余部分(包括管道 flac 编码)完成?

答案1

arecord命令有 -d 参数来使其超时,通过此修改,arecord命令将超时,但 FLAC 不会超时。

arecord -q -t wav -d 4 -f S16_LE -r 16000 | flac - -f --best --sample-rate 16000 -s -o "$TEMP_FILE"

相关内容