Deepspeech - выводит больше аудиофайлов и сохраняет результат

Я закончил обучение общим голосовым данным для глубокой речи от Mozilla, и теперь я могу получить вывод для одного аудио .wav файл. Ниже приведена команда, которую я использую.

(deepspeech-venv) megha@megha-medion:~/Alu_Meg/DeepSpeech_Alug_Meg/DeepSpeech$ ./deepspeech my_exportdir/model.pb/output_graph.pb models/alphabet.txt myAudio_for_testing.wav

здесь myAudio_for_testing.wav - аудиофайл, который я использую, чтобы получить приведенный ниже вывод.

TensorFlow: v1.6.0-9-g236f83e
DeepSpeech: v0.1.1-44-gd68fde8
Warning: reading entire model file into memory. Transform model file into an mmapped graph to reduce heap usage.
2018-06-29 14:51:35.832686: I tensorflow/core/platform/cpu_feature_guard.cc:140] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2 FMA
heritor teay we decide the lunch ha annral limined eddition of y ye com im standmat

Наследник, мы решаем, что обед будет завершен

Вот мои несколько вопросов,

1) Выделенное предложение, выделенное жирным шрифтом, является выводом для моего аудио. как я могу сохранить этот файл?

2) У меня есть около 2000 аудио файлов, как это. Как я могу прочитать 1 на 1 и получить вывод? Я пытался написать скрипт на python для чтения всех имеющихся у меня аудиофайлов.wav, но поскольку моя служба Deepspeech использует некоторые источники, хранящиеся в виртуальной среде, я не понимаю, как мне написать свою команду Deepspeech внутри сценария., Ребята, можете ли вы дать мне несколько советов, чтобы продолжить? Это будет отличная помощь.

Спасибо:)

Megha

2 ответа

Решение

Для второго вопроса я добавил дополнительный раздел в файле client.py файла Deepspeech, чтобы встретить несколько файлов и сохранить каждую стенограмму в файле Excel с соответствующим именем файла в качестве значения индекса.

> r =csv.reader(open('my_CSV_file.csv')) lines = list(r) pathToAudio =
> args.audio#sys.argv[3] audio_files = os.listdir(pathToAudio) for i in
> range(1,len(lines)):
>     for eachfile in audio_files :
>         if eachfile.endswith(".wav"):  
>             if(eachfile == lines[i][1]):
>               file_Path = pathToAudio + "/" + eachfile 
>                   print("File to be read is ",  file_Path)
>                   fs, audio = wav.read(file_Path)
>                   audio_length = len(audio) * ( 1 / 16000)
>                   assert fs == 16000, "Only 16000Hz input WAV files are supported for now!"
>                   print('Running inference.', file=sys.stderr)
>                   inference_start = timer()
>                   output = ds.stt(audio, fs)
>                   lines[i][2] = output                   
>                   writer = csv.writer(open('my_CSV_file', 'w'))
>                   writer.writerows(lines)
>                   print(output)
>                   inference_end = timer() - inference_start
>                   print('Inference took %0.3fs for %0.3fs audio file.' % (inference_end, audio_length), file=sys.stderr)

Я нашел решение для моего первого вопроса. мы можем просто перенаправить вывод в некоторый файл, как показано ниже.

(deepspeech-venv) megha@megha-medion:~/Alu_Meg/DeepSpeech_Alug_Meg/DeepSpeech$ ./deepspeech my_exportdir/model.pb/output_graph.pb models/alphabet.txt myAudio_for_testing.wav > output_test.csv
TensorFlow: v1.6.0-9-g236f83e
DeepSpeech: v0.1.1-44-gd68fde8
Warning: reading entire model file into memory. Transform model file into an mmapped graph to reduce heap usage.
2018-06-29 15:22:50.275833: I tensorflow/core/platform/cpu_feature_guard.cc:140] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2 FMA

Я просто добавил > output_test.csv после моей команды.

Но я так и не смог разобраться со вторым вопросом.

Я не знаю, слишком ли поздно отвечать на ваш вопрос, но оставляю свой ответ здесь на случай, если у других может быть такая же / похожая проблема.

На странице github Mozilla/DeepSpeech они используют скрипт transcribe.py. В этом скрипте у них есть функция под названием transcribe_many (src_paths, dst_paths). По сути, эта функция принимает на входе список местоположений аудиофайлов (src_paths) и загружает их в ОЗУ, а затем делает вывод в режиме множественной обработки. Вывод записывается в папку "dst_paths".

Вот предварительный просмотр кода из файла, которым я поделился по ссылке выше.

def transcribe_many(src_paths,dst_paths):
    pbar = create_progressbar(prefix='Transcribing files | ', max_value=len(src_paths)).start()
    for i in range(len(src_paths)):
        p = Process(target=transcribe_file, args=(src_paths[i], dst_paths[i]))
        p.start()
        p.join()
        log_progress('Transcribed file {} of {} from "{}" to "{}"'.format(i + 1, len(src_paths), src_paths[i], dst_paths[i]))
        pbar.update(i)
    pbar.finish()
Другие вопросы по тегам