![使用 sox 分割音频流并使用脚本处理块](https://linux22.com/image/147915/%E4%BD%BF%E7%94%A8%20sox%20%E5%88%86%E5%89%B2%E9%9F%B3%E9%A2%91%E6%B5%81%E5%B9%B6%E4%BD%BF%E7%94%A8%E8%84%9A%E6%9C%AC%E5%A4%84%E7%90%86%E5%9D%97.png)
我使用 sox 来分割音频流,如下所示
stream | sox -t raw -r 16k -e signed -b 16 -c 1 - ./chunks/output.wav silence 1 0.3 0.1% 1 0.3 0.1% trim 0 55 : newfile : restart
现在 sox 将块写入 chunks 文件夹。我可以将它们通过管道传输到脚本进行处理而不写入磁盘吗?
像这样的东西
stream | sox | node script.js
答案1
Unix 管道总是传递字节流。然而,拆分的重点是您获得多个字节流,并且不可能通过单个管道传递多个字节流(除非您将它们再次连接成单个字节流,这违背了拆分它们的目的)。
bash
您可以使用通常的for 循环、 或parallel
或任何您喜欢的方式在块文件夹中的每个块文件上调用脚本。
您还可以使用允许您在每个分割块上调用外部程序的程序。 AFAIKsox
无法做到这一点,但可能有其他音频分割程序可以。