Скрипт сканирует папку, путь к которой задается переменной path_data, составляет список файлов с расширением .nmf, после чего запускает NiceNmfDecoderConsole в десять потоков (количество потоков определяется переменной threads). Как только хоть один поток завершит работу, скрипт запишет в лог-файл имя файла над которым работал поток и код завершения (где 0 – успешно). По завершению потоков скрипт будет запускать новые, для последующих файлов в списке, постоянно поддерживая параллельную работу десяти, пока не закончится список файлов.
Какую модель Kaldi вы используете, публичная/приватная?
Где можно послушать и посмотреть демо от распознавания?
Модель приватная. Образцы продемонстрировать, к сожалению, не можем из-за строгих политик конфиденциальности в компании.
А вот разрешите до кода докопаться! )
files = listdir(path_data) files = list(filter(lambda x: x.endswith('.nmf'), files)) file = gen_file(files)
1. Зачем вы используете генератор? Ведь в вашем случае он просто дергает элементы из явно построенного списка.
with open('c:\\Users\\User\\NiceNmfDecoderConsole\\Log_file.txt',...
2. Разумно ли открывать и закрывать один и тот же лог-файл в параллельных процессах? Есть же модуль logging.
Генератор использован в связи с тем, что метод map() класса Pool вторым аргументом не принимает list, только итератор. Приходится итерировать либо при помощи file = iter(files), или с помощью def/yield, как в примере. По поводу модуля logging дельное замечание, если скрипт понадобится повторно, стоит доработать.