LINUX.ORG.RU

Библиотека для распознавания русской речи на Android и Linux без сети

 


10

4

Опубликована версия 0.3 библиотеки vosk для локального распознавания слитной речи, поддерживающая русский язык.

Для платформы Android подготовлен APK-пакет, а для Linux можно использовать Python-библиотеку (пример использования), производительности которой достаточно для работы на платах Raspberry Pi.
Библиотека работает на усовершенствованном движке Kaldi.
Языковая модель занимает всего 50Мб и работает точнее DeepSpeech (модель размером более 1Гб).
Поддерживаются языки: русский, английский, немецкий, французский, китайский. Ожидается поддержка испанского, хинди, арабского и португальского.

Источник

>>> Подробности

Ответ на: комментарий от BLOBster

Оффлайновый открытый text-to-voice сейчас уже есть ? На мобильнике или десктопе, не суть важно.

RHVoice - пользуюсь каждый день, видел как его создавали ещё как голос для фестиваля, нанимая диктора на пожертвования и используя помощь энтузиастов.

anonymous ()
Ответ на: комментарий от quickquest

Только фразеологический анализ даёт возможность прогнозируемого распознавания родителями «вышел зайчик погулять» по лексеме «лаз, дыва, тли, читыле, пять…» :)

Наверное, вы под словом «фразеологический анализ» понимаете совсем не то, что оно означает.
Фразеологический анализ - это связывание фразы с её смыслом.
Для улучшения распознавалки речи нам достаточно знания частот употребления наборов слов без попытки как-то привязать к ним смысл.

И вообще, звучаний типа «лаз дыва тли» или «элёвэн» в принципе не должно быть заложено в распознавалки.
Суть распознавалки речи - это ориентироваться на средне-правильное произношение и работать без предварительной настройки на конкретный голос (ну, или как-то подстраиваться под особенности говорящего по ходу дела, ведь и человек тоже не сразу начинает понимать говорящего с акцентом, сначала нужно «привыкнуть»).
Привет тем, кто в танке в лифте.

Egor_ ()
Ответ на: комментарий от Egor_

Фразеологический анализ - это связывание фразы с её смыслом.

Ага, но продолжая анализ обратно, от смысла к фразе, можно восстанавливать искажённые и даже пропущенные слова по её смыслу: «лаз, ***, тли» — > «раз, два, три».
Это аналогично кодам, исправляющим ошибки, но вместо битов/байтов — буквы/слова, корректируемые распознаными лексемами/фразами.

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

Для улучшения распознавалки речи нам достаточно знания частот употребления наборов слов без попытки как-то привязать к ним смысл.

Нет, классические примеры:
Для распознавания и перевода «Глокая куздра» © частоты бесполезны.
А «Пуськи бятые» © никакая программа не осилит «ваще», процессор задымится :)

quickquest ★★★★★ ()
Последнее исправление: quickquest (всего исправлений: 2)
Ответ на: комментарий от quickquest

Для распознавания и перевода «Глокая куздра» © частоты бесполезны.

перевод не требуется
распознавание голоса - это написание буквами без понимания смысла

А «Пуськи бятые» © никакая программа не осилит «ваще»

если в корпус языка будут включены тексты, содержащую упоминание этой пуськи (т.е., многочисленные перепечатки этой лабуды в разных источниках), то всё распознается тупо по частотам

у тебя просто какая-то навязчивая мысль про необходимость распознавания смысла, вот ты и приплетаешь ненужные фразеологические словари и разбор текста на контекстно зависимые лексемы

Egor_ ()
Ответ на: комментарий от Egor_

перевод не требуется

«А мужики-то, выпускающие голосовые переводчики ©, не знают!»

если в корпус языка будут включены тексты, содержащую упоминание этой пуськи

Тогда придётся «туды впихнуть» все тексты, произнесённые человечеством с момента «сотворения мира». Проще сотворить специализированные словари + иерархический анализ.

у тебя просто какая-то навязчивая мысль про необходимость распознавания смысла

… основанная на наблюдении многолетних 1, 2, 3, … сизифовых попыток фанатов чисто фонетического распознавания, возможного только в лабораторных условиях. В реальной жизни юные человеки с пелёнок учатся распознавать речь со смыслом.

quickquest ★★★★★ ()
Последнее исправление: quickquest (всего исправлений: 2)
Ответ на: комментарий от quickquest

В реальной жизни юные человеки с пелёнок учатся распознавать речь со смыслом.

А как оно у гугла сделано? Нужно просто взять и сделать так же, гугл распознает хорошо.

KillTheCat ★★★★★ ()
Ответ на: комментарий от quickquest

Карл у Клары украл кораллы а Клара у Клары украла кларнет

Все хорошо распознает. Я специально заменил Карла на Клары, что-бы обмануть возможный постпроцессинг, но гугл прошел тест.

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

PS: Лучшее - враг хорошего.

KillTheCat ★★★★★ ()
Ответ на: комментарий от KillTheCat

В видео упомянутого здесь Николая Шмырёва сказано что Гугл или Яндекс натренировал свои сети на десятках тысяч часов речи. У них есть ресурсы на это. А своими руками понадобится годы работы железа.. Поэтому повторить сложно..

unDEFER ★★★★ ()
Ответ на: комментарий от unDEFER

В видео упомянутого здесь Николая Шмырёва сказано что Гугл или Яндекс натренировал свои сети на десятках тысяч часов речи.

Выше есть ссылка на 20к часов речи. А что если написать софт для распределенного тренинга, через тот же BOINC?

KillTheCat ★★★★★ ()
Ответ на: комментарий от KillTheCat

А что если написать софт для распределенного тренинга, через тот ж е BOINC?

Это нетривиальная задача между прочим. Чем больше узлов, тем сложнее им договориться, как модель оптимизировать. https://arxiv.org/pdf/1804.03235.pdf

welkam ()
Ответ на: комментарий от KillTheCat

Да, только получены эти 20 тысяч часов речи автоматом с частотой ошибок > 5%.

Следовательно используя чисто эти данные частоту ошибок меньше никогда не получишь.

unDEFER ★★★★ ()
Ответ на: комментарий от quickquest

«А мужики-то, выпускающие голосовые переводчики ©, не знают!»

а при чём тут переводчики?
ты бы название темы читал куда комментишь )))
перевод - это отдельная задача, и реализовывать её, естественно, лучше отдельным софтом, не связанным с распознаванием
распознавание речи - это перевод wav в txt

Тогда придётся «туды впихнуть» все тексты, произнесённые человечеством с момента «сотворения мира»

да, корпус русского языка - это меньше миллиадра слов
там только произведения классиков да тексты из официальных газет (ну, и ещё чуток научной литературы)
а вот всякие глокие куздроюзеры запачкали интернет многими миллиадрами слов, и для распознавалки они тоже были бы не лишними

В реальной жизни юные человеки с пелёнок учатся распознавать речь со смыслом.

да
думаю, что наши «уши» допускают те же 5% ошибок начального распознавания, что и софт
в этих 5% случаев мы начинаем задумываться, что хотел сказать собеседник, и начинаем подгонять слова под смысл всей фразы
я же хочу сказать, что результат корректировки плохоуслышанных слов в случае использования словаря частот комбинаций слов будет не сильно отличаться от использования полного семантического разбора

кстати, приблизиться к ИИ семантическим разбором не получится
нейронной сеткой можно получить только ИИ (искусственного имбецила), который будет знать только о том, на что его натаскали, а шаг вправо шаг влево - полная неузнаваемость (показательный пример ограниченной возможностей сетки - первая жертва беспилотного автомобиля: на пешеходов эту сетку натаскали, на велосипедистов тоже натаскали, а вот чувак, идущий рядом с велосипедом, не распознался как объект знакомого типа, поэтому не получилось предсказать его дальнейшее поведение, и когда чувак вышел на твою полосу - на торможение времени уже не осталось, поэтому его поделили на нуль)
ИИ не может быть реализован никаким алгоритмом, тем более сеткой

Egor_ ()
Ответ на: комментарий от KillTheCat

Я специально заменил Карла на Клары, что-бы обмануть возможный постпроцессинг

Гугл справился? Ну тогда усложни задачу:
Карл Клару склонил к аморалу, к оралу, к аналу и кончил в кларнет

Egor_ ()
Ответ на: комментарий от Egor_

а при чём тут переводчики?

При том, что хитрые человеки используют их для голосового ввода, установив «перевод ru-ru».

приблизиться к ИИ семантическим разбором не получится

Каждый слой иерархического разбора не только сокращает тупой поиск в «корпусе языка», но и порожает ассоциативные связи между кластерами (лексемами), отсутствующими в исходном информационном потоке. Любой математический текст, легко понимаемый математиком, Гуглу не осилить, в том числе из-за отсутствия семантического разбора абстрактных лексем.

ИИ не может быть реализован никаким алгоритмом, тем более сеткой

Граф общего вида с самомодификацией связей могёт адаптироваться к любым внешним условиям. Возможный вариант базовой мотивации ИИ — принцип Гамильтона ©, он же гуманитарный критерий «природной лени»: достигнуть цели при минимальных усилиях.

P.S. Одна из причин пессимизма при создании ИИ — эффект Маугли: человек, формирующийся в волчьей стае, не может стать человеком. Нейросетки, живущие в стае компьютеров, тоже становятся компьютерами, а не человеками :)

quickquest ★★★★★ ()
Последнее исправление: quickquest (всего исправлений: 2)
Ответ на: комментарий от Egor_

С паузами:

Карл Клару склонил к аморалу к оралу каналу и кончил в кларнет
Карл Клару склонил к аморалу к оралу каналу и кончил порно

Без пауз хуже:

Карл Клару склонил к аморалу Coral каналу и кончил в 12
Карл Клару склонил к аморалу кораллом каналу закончил
Карл Клару склонил к аморалу корова каналы консультант

vosk-api с паузами:

карл клару склонил комара ло коралловым каналу и кончил кларнет
KillTheCat ★★★★★ ()
Ответ на: комментарий от quickquest

Граф общего вида с самомодификацией связей могёт адаптироваться к любым внешним условиям. … достигнуть цели при минимальных усилиях.

так вы этому графу не сможете объяснить какова его цель :-)
как только он увидит (как баран) новые ворота, которых не было в обучении, - всё, соскочит в поведение по дефолту
объясняю популярно на примере пешеходов и беспилотных автомобилей. с точки зрения сетки окружающий мир выглядит как непонятное хрен-знает-что, среди которого иногда выхватываются распознаваемые фрагменты (разделительная полоса, автомобиль, пешеход, светофор). А если, например, пешеход несёт лист картона метр на полтора, и из-за этого листа выглядывают лишь его глаза и шляпа, то водитель поймёт, что это пешеход (даже если водитель никогда раньше не видел таких листов картона), а сетка не поймёт (её к такому не готовили), короче вот так и погиб сокартону. В ближайшие десятилетия мы будем вынуждены жить в таком мире, где нужно «быть как все», иначе та хрень, которую почему-то все называют «ИИ», тебя не посчитает за человека и что-нибудь нехорошее с тобой сделает :-)

Egor_ ()
Последнее исправление: Egor_ (всего исправлений: 1)
Ответ на: комментарий от Egor_

так вы этому графу не сможете объяснить какова его цель :-)

Цель твоего автопилота — переместиться в пространстве из 1 точки во 2 по маршруту навигатора, с ограничениями, установленными ПДД и избегая столкновений с любыми препятствиями. Он не обязан распознать пешехода за фанерой, но обнаружив опасное приближение неизведанного объекта, должен просто тормозить, вплоть до полной остановки и отправки панического сообщения в сеть: «нет пути! ничего не понимаю!! всё пропало!!!» :)

quickquest ★★★★★ ()
Ответ на: комментарий от quickquest

Он не обязан распознать пешехода за фанерой, но обнаружив опасное приближение неизведанного объекта, должен просто тормозить

боюсь, твои радужные мечты разбиваются о жёсткую реальность
ты представляешь, инженеры ещё не научились создавать автомобили, которые могут моментально затормозить!
прикинь, они твердят что-то про какой-то тормозной путь и прочую техническую ерунду вместо того чтобы просто выполнить элементарную команду: если ИИ послал сигнал СТОП, то автомобиль должен сразу остановиться, что может быть проще???

короче, из-за того, что инженеры не смогли выполнить свою задачу, твоя задача усложняется
твой автопилот ОБЯЗАН предсказывать будущее поведение видимых объектов.
например, предположим, что на соседней встречной полосе движения находится какой-то объект, обычно это или машина или пешеход.
про машину известно, что она никогда не заедет на твою полосу, и её можно игнорировать при планировании движения.
а вот пешеход, сцуко, может зайти на твою полосу и даже внутренне убеждён, что твой автомобиль заранее поймёт его намерения и «подыграет» ему, остановившись у пешеходного перехода.
один такой оптимист с велосипедиком уже переходил да недошёл, потому что автопилот не смог понять, что это пешеход.
пешеходы верят в какой-то там ПДД, который якобы даёт им неуязвимость от удара твоим бампером, вот же наивные кожаные ублюдки! )))
короче, нужно как-то отличать пешеходов, даже если они прикрыты картоном.
а теперь попробуй объяснить своей сетке постановку задачи «найти всех пешеходов на картинке»
она не поймёт такую постановку задачи
она будет думать, что ты хочешь «найти все объекты, похожие на те образцы, которые ты показываешь сетке на обучении»

приближение неизведанного объекта

как ты объяснишь сетке, что такое «неизведанный объект»?
покажешь ей образцы неизведанных объектов? )))

Egor_ ()
Последнее исправление: Egor_ (всего исправлений: 2)
Ответ на: комментарий от Egor_

пешеходы верят в какой-то там ПДД, который якобы даёт им неуязвимость от удара твоим бампером, вот же наивные кожаные ублюдки! )))

Точно! Давно мечтаю чтобы было так - начал переход дороги в неположенном месте - тебя мгновенно сбивает автомобиль и водителю за это ничего нет.

На практике не раз видел ситуацию - центр не большого города, четырёхполосная дорога, какая-то бабушка переходит дорогу где ей вздумается (до пешеходного перехода метров 50), и что самое характерное - не давят! Куча машин вынуждены тормозить, пропускать…

А я пристрелить готов этого пешехода, глядя на это…

unDEFER ★★★★ ()
Ответ на: комментарий от Egor_

инженеры ещё не научились создавать автомобили, которые могут моментально затормозить!

Моментально ненужно. Тут намедни скоростной «Сапсан» сбил очередную старушку, думавшую, что она умнее поезда с тормозным путём 2430 м при торможении со скорости 250 км/ч ©. Система просто включает программу экстренного торможения даже если столкновение неизбежно.

а теперь попробуй объяснить своей сетке постановку задачи «найти всех пешеходов на картинке»

Задача другая: любое препятствие, которое обнаружено на полосе движения или движется пересекающимся курсом и не распознано как автомобиль — опасно.

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

как ты объяснишь сетке, что такое «неизведанный объект»?

Любой объект, которого в базе изведанных нету.

покажешь ей образцы неизведанных объектов? )))

Покажу изведанные и обучу кластеризации ©, а те, которые в кластеры не попадают — неизведанные.

quickquest ★★★★★ ()
Ответ на: комментарий от quickquest

Задача другая: любое препятствие, которое обнаружено

что такое «препятствие»?
как ты обучишь сетку распознавать препятствия? покажешь ей образцы препятствий? )))

ты рассуждаешь в терминах «объектов» и «препятствий», являющихся элементами следующего уровня абстракции, который ещё не построен
а чтобы его построить, объекты нужно распознать
картинка - это просто набор пикселей

Egor_ ()
Ответ на: комментарий от Egor_

картинка - это просто набор пикселей

Картинки и пиксели — это входные данные для нейросети, на выходе которой объекты и препятствия. Нейросети для того и придуманы, чтоб нам не думать.

что такое «препятствие»? как ты обучишь сетку распознавать препятствия? покажешь ей образцы препятствий? )))

Сейчас многие занимаются беспилотным направлением, например, первый попавшийся проект тут.

Ну, или напиши письмо Маску, чтоб он тебе беспилотную «теслу» прислал для изучения и тестирования :)

quickquest ★★★★★ ()
Последнее исправление: quickquest (всего исправлений: 1)
Ответ на: комментарий от quickquest

Картинки и пиксели — это входные данные для нейросети, на выходе которой объекты и препятствия.

похоже, ты не понимаешь главного: нейросеть может опознать только то, что очень похоже на образцы, которые ей показывали при обучении
если ты не обучишь её опознавать лужи, то лужа на дороге будет посчитана «неизведанным объектом», и твой пепелац остановится перед первой же лужей
проблема с сетями в том, что если ей показали N типов объектов, то на улице обязательно встретится (N+1)-ый.

письмо Маску, чтоб он тебе беспилотную «теслу» прислал для изучения и тестирования

а ты считаешь, что у маска сети чем-то лучше тех уберовских сетей, которые задавили пешехода с велосипедом?

Egor_ ()
Ответ на: комментарий от Egor_

нейросеть может опознать только то, что очень похоже на образцы, которые ей показывали при обучении

Так работают только примитивные сети, а «умные» могут создавать новые абстрактные кластеры и при появлении очередного «неизведанного объекта», классифицировать его как «частично неизведанного» из абстрактного кластера № *.
Похожесть — простейшая мера близости, но есть и более хитрые меры и методы иерархической кластеризации ©.

Лужи — хороший пример абстрактного кластера, и останавливаться перед ними (или объезжать) невредно, хотя бы потому, что под ней может быть «конкретная яма» из абстрактного кластера «невидимые ямы». Например, недавно по ТВ показывали запись с дорожного выдеорегистратора, как человеки попытались проехать по парящей луже, образованной прорывом теплосети, опрокинулись в яму и сварились… Так, что при неизведанных ситуациях лучше перебдить, чем недобдить.

а ты считаешь, что у маска сети чем-то лучше тех уберовских сетей

У кого лучше не знаю, но Маск не боится экспериментировать с сетями при высоком уровне риска и неопределённости.

quickquest ★★★★★ ()
Ответ на: комментарий от quickquest

а «умные» могут создавать новые абстрактные кластеры и при появлении очередного «неизведанного объекта», классифицировать его как «частично неизведанного» из абстрактного кластера № *.

ну, это всё меняет!
передавив пару дюжин переходов с велосипедами, сеть, возможно, научится их выделять в отдельный кластер, и помня свой горький опыт (эти объекты мешаются под колёсами), добавит для них правило «объезжать».
проблема в том, что у сети нет времени учиться на своих ошибках. когда ты выпускаешь автомобиль на дорогу, он уже должен всё знать и всё уметь. и если пдд требуют «пропустить пешехода», а ты не можешь в 100% случаев распознать пешехода, то значит выпускать на улицу такой самодвижущийся аппарат нельзя. и его самообучаемость - очень слабое оправдание.

Egor_ ()