Я использую 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 (например, для файла с первой командой). mp3 "становится" file.wav ", затем с помощью второй команды" file.wav "становится" file.txt ").
Как это сделать, используя один файл скрипта?
#!/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
Это получит весь .mp3s в том каталоге, преобразует их в .wav затем выполненный сфинкс на них.