脚本用于解析目录并使用相同的名称重命名并仅更改扩展名(使用 sphinx 转换后)

脚本用于解析目录并使用相同的名称重命名并仅更改扩展名(使用 sphinx 转换后)

我用来pocketsphinx将音频文件转换为文本。这两个命令必须完成这项工作:

首先我跑

ffmpeg -i file.mp3 -ar 16000 -ac 1 file.wav

然后我跑

pocketsphinx_continuous -infile file.wav 2> pocketsphinx.log > result.txt

对于每个文件(mp4 或 mp3),我都这样做,我想在脚本中只执行一次这两个命令,通过浏览目录内容(扩展名为 mp3 或 mp4 的文件),并为文件赋予相同的名称,扩展名为 .txt(例如,第一个命令“file.mp3”变为“file.wav”,然后使用第二个命令“file.wav”变为“file.txt”)。

如何使用单个脚本文件做到这一点?

答案1

#!/usr/bin/env bash

dir=$1

for path in "$dir"/*.mp3; do
  name=$(basename "$path")
  ffmpeg -i "$path" -ar 16000 -ac 1 "$dir/$name.wav"
  pocketsphinx_continuous -infile "$dir/$name.wav" 2> "$dir/pocketsphinx.log" > "$dir/$name.txt"
done

将脚本保存在类似的地方convert_all.shchmod +x然后像这样使用它:

./convert_all.sh path/to/some/dir

它将获取该目录中的所有 .mp3,将其转换为 .wav,然后在它们上运行 sphinx。

相关内容