Comments 9
Не совсем понял, зачем явно проверять работу контейнера?
Чтобы не потерять данные - достаточно подмонтировать volume, в котором mongo хранит свои данные.
Если у контейнера фиксирован порт - тогда первый запущенный экземпляр сразу процент экземпляр данные, если они уже есть, а второй - всё равно не запустится, т.к. порт будет занят.
Да и вообще mongo для хранения "ключ:строка" - какой-то оверкилл, хватит и SQLite.
Также не раскрыта тема бекапов...
А vosk сервер у вас как запущен? сами конфигурировали для использования русскоязычной модели?
для описания всех запущенных процессов можно использовать docker-compose.yml: ваш python-бот + монго + caldi
для описания всех запущенных процессов можно использовать docker-compose.yml: ваш python-бот + монго + caldi
vosk объект загружается в оперативную память из файла — модели, русскоязычная модель готова к применению «из коробки» и доступна из официального источника
круто!!! молодец! задумка отличная
Я как-то надиктовал VOSK'у целую статью. Распознанный результат выглядел как бред сумасшедшего, но я, как автор, по итогу смог понять основные мысли, о чем говорилось в том или ином абзаце. Как у вас с качеством?
В коде примеров автора проекта данные считываются понемногу:
В серверной реализации тоже.
В Telegram канале по распознаванию речи высказывали мнение, что не нужно подавать больше секунды звука за раз, однако, мне неизвестно четкое объяснение почему именно так.
Не удалось найти в документации описание метода AcceptWaveform, но для себя имею такое пояснение: «AcceptWaveform возвращает true, когда обнаружена тишина и данные могут быть получены через метод Result. Если тишина не обнаружена, частичные данные можно получить через метод PartialResult. Вызов метода FinalResult сбрасывает внутреннее состояние объекта и возвращает оставшийся результат».
Вызов FinalResult вместо Result, если AcceptWaveform вернул положительный результат иногда помогает получить более точное распознавание, если, например, за громкой длинной фразой следует короткая тихая фраза. В таких случаях Result может вернуть только первую фразу, даже если между двумя фразами и после последней фразы есть тишина.
while True:
data = wf.readframes(4000)
if len(data) == 0:
break
if rec.AcceptWaveform(data):
print(rec.Result())
else:
print(rec.PartialResult())
В серверной реализации тоже.
В Telegram канале по распознаванию речи высказывали мнение, что не нужно подавать больше секунды звука за раз, однако, мне неизвестно четкое объяснение почему именно так.
Не удалось найти в документации описание метода AcceptWaveform, но для себя имею такое пояснение: «AcceptWaveform возвращает true, когда обнаружена тишина и данные могут быть получены через метод Result. Если тишина не обнаружена, частичные данные можно получить через метод PartialResult. Вызов метода FinalResult сбрасывает внутреннее состояние объекта и возвращает оставшийся результат».
Вызов FinalResult вместо Result, если AcceptWaveform вернул положительный результат иногда помогает получить более точное распознавание, если, например, за громкой длинной фразой следует короткая тихая фраза. В таких случаях Result может вернуть только первую фразу, даже если между двумя фразами и после последней фразы есть тишина.
Sign up to leave a comment.
Голосовой дневник на python с распознаванием голоса и сохранением в Mongo DB