#python #vosk
#python #vosk
Вопрос:
когда я пытаюсь запустить test_ffmpeg.py используя мой собственный аудиофайл, он на самом деле не показывает все переводы в конце. но он показывает только последний абзац / пакет. например, мой аудиофайл выглядит так:
The quick brown fox jumps over the lazy dog
The quick brown fox jumps over the lazy cat
The quick brown fox jumps over the lazy rat
The quick brown fox jumps over the lazy bat
что произойдет, так это то, что все эти тексты будут отображаться, и кажется, что они переведены так, как ожидалось, но в конце скрипта он показывает только быстрые прыжки коричневой лисы через ленивую летучую мышь в качестве конечного результата
после проверки фактического файла в этой строке должен отображаться весь переведенный текст, но печатается только последняя часть, которая была записана.
print(rec.FinalResult())
Ответ №1:
rec.FinalResult()
предназначен только для использования в конце файла, как указано в документации.
Возвращает результат распознавания речи. То же, что и результат, но не ждет тишины, которую вы обычно вызываете в конце потока, чтобы получить последние биты аудио. Он очищает конвейер функций, поэтому все оставшиеся фрагменты аудио были обработаны.
Вероятно, вы ищете решение, которое добавляет каждый результат в массив. Затем вы можете распечатать это или добавить в файл.
results = []
subs = []
while True:
data = process.stdout.read(4000)
if len(data) == 0:
break
if rec.AcceptWaveform(data):
results.append(rec.Result())
results.append(rec.FinalResult())