我用来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.sh
。chmod +x
然后像这样使用它:
./convert_all.sh path/to/some/dir
它将获取该目录中的所有 .mp3,将其转换为 .wav,然后在它们上运行 sphinx。