AGI.place

Форум создателей искусственных интеллектов


Логин (email) 
Пароль 
Настройки

шрифт+
шрифт-
Скачать
Вперёд
Назад
1
2
3
4
Проект SoundAgent
Аватар
create
Проект SoundAgent
15:13 18.12.2021 №3032
Kek, благодарю за любопытные лекции. Для меня новость, что фаза не важна. Я предполагал, что с потерей фазы сигнал сильно исказится. Спасибо. Из теории я бы ещё добавил, что частоту дискретизации выбирают по теореме Котельникова, которая гласит, что для точного воссоздания сигнала с частотой F, частота дискретизации должна быть не меньше 2F. Т.е. два дискретных отсчёта на период достаточно, чтобы без потерь восстановить исходный сигнал. Например, если нам нужно сохранить частоты от 0 до 6 кГц, то частота дискретизации должна быть не менее 12 кГц. Если же нам нужен хардкор и сохранить диапазон от 0 до 24 кГц то частота дискретизации должна быть не меньше 48 кГц. Решил тоже поиграться со своими старыми проектами по обработке звука и попробовать воспроизвести эффект размытия звука (как я это называю - "бубнение"). Подозреваю, что в процессе "обубневания" звука спектральные составляющие не так важны. Если попробовать представить физику процесса распространения звука через множественные препятствия, то я думаю здесь имеет место множественные переотражения и интерференции. Поэтому я попробовал добиться этого эффекта через размытие звука во времени - просто сложил 50 последовательных отсчётов и усреднил их. Что получилось можно скачать здесь. По нажатию на кнопку "Запись" записываются 2 секунды с микрофона. Результат записи можно услышать по кнопке "Оригинал". Тест бубнения можно услышать по кнопке "Бубнение". Почему я считаю этот эффект заслуживающим внимания? Потому что, подозреваю, во всех системах восприятия (в зрительной, тактильной) любой объект распознаётся в контексте, на фоне чего-то большего. Любая деталь должна вмещаться во что-то. И мелкие звуки, щелчки, цыканья, цоканья, тоже должны быть привязаны к какой-то звуковой основе, канве. И если в зрительном восприятии, я думаю, такой основой есть крупные пятна - объекты с малой "пространственной частотой" - то в звуке тоже должен быть такой крупный звуковой объект, к которому привязываются и позиционируются звуковые объекты помельче. Но если при зрительном восприятии картина разворачивается в плоскости (в пространстве), и мы можем найти цветовые пятна просто усредняя рядом стоящие пиксели, то звуковая картина разворачивается во времени и таким большим звуковым объектом может быть что-то, что имеет большую длительность и малую изменчивость во времени. Подозреваю что таким усреднённым "звуковым пятном" и есть вот это самое бубнение, которое мы различаем, слушая разговор издалека или из-за стены, и которое аппарат восприятия воспроизводит в своих механизмах, для позиционирования относительно этого "звукового пятна" всех остальных мелких звуковых артефактов.
0 | 0
create
Проект SoundAgent
19:53 18.12.2021 20:02 18.12.2021 №3034
Prosolver:
Kek, благодарю за любопытные лекции. Для меня новость, что фаза не важна.
Да, это так, или почти так, потому что сильно искажаются звуки речи, где есть большая атака. Второе. Фаза при ресинтезе все-таки имеет значение. Особенно это было заметно на первых синтезаторах речи, когда производилось адиттивноый синтез путем соединения ранее записанных фрагментов речи. Но!!! В экспериментах уважаемого Сергея ресинтез нужен только для контроля разборчивости. Поэтому стыки фаз между кадрами мы стараемся отфильтровать, сосредоточившись на разборчивости слов. Еще - фаза очень важна на самых низких частотах. И тут ухо легко различает сдвиг фазы основного тона. Есть у меня книга Физика музыкальных звуков. Автор Тейлор. Выпуска 1976 г. Я ее купил примерно в этом же году. Моя любимая книга по звуку до сих пор. Очень советую. Хотя, м.б. что-то в ней и устарело. В этой книге есть наглядные примеры сложения колебаний, сдвига фаз и т.д. и психоакустические эфекты этого.
Prosolver:
Из теории я бы ещё добавил, что частоту дискретизации выбирают по теореме Котельникова, которая гласит, что для точного воссоздания сигнала с частотой F, частота дискретизации должна быть не меньше 2F.
Тут вы немного не поняли Сергея. Одно дело - когда нужно со своей какой-то дискретизацией по времени порезать исходный звук во временной последовательности. Тут да, теорема Котельникова рулит. И совсем другое дело, когда производится анализ и точный поиск частот в спектре входного сигнала, т.е. в частотной области. В данном случае ошибка в точности определения будет 25 герц - шаг между дискретами частоты в диапазоне 240 интервалов. И тут я кину небольшой камешек в огород Сергея. Т.к. точность определения частоты в исходном спектре равномерна и равна 25 герц, то на низких частотах 20-200 гц получается слишком большая ошибка. Грубо говоря, левые пики из 12 главных в кадре будут сильно сдвинуты влево или вправо относительно их реального положения. И чем левее пик, тем эта ошибка больше. Еще нужно учесть эффект маскирования звука ухом. Т.е. если рядом находятся два пика сигнала, то более высокочастотный ухом будет почти неслышен. Поэтому из 12 показанных Сергеем пиков смело можно удалить несколько без существенной потери в восприятии. Но только по вышеуказанному алгоритму. Кстати, психофизические свойства слуха использует давнишний формат MP3. Почитайте его спецификацию.
0 | 0
Аватар
create
Проект SoundAgent
21:15 18.12.2021 №3035
Виктор Казаринов:
И тут я кину небольшой камешек в огород Сергея. Т.к. точность определения частоты в исходном спектре равномерна и равна 25 герц, то на низких частотах 20-200 гц получается слишком большая ошибка.
Верно. Именно поэтому в классике делают нелинейное преобразование спектра. Расстояние по частоте тем меньше, чем частота ниже. В высокочастотной области достаточно все собрать в 3,4 полосы.
0 | 0
create
Проект SoundAgent
08:33 19.12.2021 08:38 19.12.2021 №3037
Конечно, этот вариант хуже, чем разработки Сергея, но вот я решил выложить на сайт тестовый вариант программы автономного распознавания речи на основе VOSK. Для тестирования можно открыть страничку: https://aigod.com/speechrec/ Затем нажать на кнопку и подождать, пока загрузится русская языковая модель. Она почти 40 мб. размером. Есть, конечно и полная модель. Но она на порядок больше и на медленном интернете будет грузиться еще дольше. Текущая неполная модель содержит меньшее количество распознаваемых слов, только какой-то определенный минимум. Программа попросит разрешить работу с микрофоном. После этого можете произносить слова, фразы и видеть результат. Распознанные слова и фразы выводятся последовательно в одну строку. Чтобы очистить, придется перезагрузить страницу. Такая вот первая проба технологии WebAssembly, когда внутри браузера работает вполне серьезная программа, написанная на С/С++ с нейросетями. Я проверял в браузере Google Chrome. Если в других браузерах не будет работать, просьба сообщить об этом, если, конечно, топикстартер позволит здесь такой оффтопик. Кстати, и программу Сергея, думаю, вместе с графикой. можно упихать в браузер, но после серьезной переделки под требования данной технологии. Ведь можно и быструю 2D и 3D графику таким образом имплементировать.
+1 | 0
Аватар
create
Проект SoundAgent
09:50 19.12.2021 №3038
Виктор Казаринов:
Конечно, этот вариант хуже, чем разработки Сергея, но вот я решил выложить на сайт тестовый вариант программы автономного распознавания речи на основе VOSK. Для тестирования можно открыть страничку: https://aigod.com/speechrec/
Всё прекрасно работает в Яндексе!!!
0 | 0
Аватар
create
Проект SoundAgent
11:42 19.12.2021 №3039
Виктору вопрос. Хорошо, ты можешь пояснить как устроена модель, как заполняются вектора для нейросети, если она есть, как работает словарный запас? Это интересно.
0 | 0
create
Проект SoundAgent
12:38 19.12.2021 12:46 19.12.2021 №3040
Kek:
Виктору вопрос. Хорошо, ты можешь пояснить как устроена модель, как заполняются вектора для нейросети, если она есть, как работает словарный запас? Это интересно.
Вот эта контора поделилась с миром: https://alphacephei.com/vosk/ На сайте можете перейти на русский язык. Поддерживает 20+ языков и диалектов - русский, английский, индийский английский, немецкий, французский, португальский, испанский, китайский, турецкий, вьетнамский, итальянский, голландский, валенсийский, арабский, греческий, персидский, филиппинский, украинский, казахский, шведский. В скором времени будут добавлены и другие. Я скачал все требуемое для данных языков. Все в открытом доступе. https://alphacephei.com/vosk/faq Гугли перевод основных пунктов: "1. В чем разница между Kaldi и Vosk. Kaldi - это исследовательский набор инструментов для распознавания речи, в котором реализованы многие современные алгоритмы. Vosk - это практическая библиотека распознавания речи, которая поставляется с набором точных моделей, скриптов, практик и предоставляет готовые к использованию функции распознавания речи для различных платформ, таких как мобильные приложения или Raspberry Pi. Если вы занимаетесь исследованиями, возможно, вам подойдет Калди. Если вы хотите создавать практические приложения с библиотекой plug and play, рассмотрите Vosk. Vosk повторно использует передовые методы точного распознавания речи из многих других наборов инструментов, а не только Kaldi. В нашем исследовании мы используем Nvidia Nemo, Fairseq и многие другие библиотеки с открытым исходным кодом. Наша цель - создать платформу для непрерывного обучения, которая постоянно улучшает распознавание речи для основных языков и вариантов использования. 2. Где взять модель получше Мы обучаем наших моделей на тысячах часов речевых данных, и они должны быть довольно хорошими «из коробки». Тем не менее, если вы ищете более точную информацию, свяжитесь с нами , мы постараемся вам помочь. 3. Как добавить поддержку нового языка Процесс построения новой языковой модели состоит из следующих шагов: Сбор данных (вы можете собирать аудиокниги с транскрипцией текста из таких проектов, как - librivoxтранскрибированные подкасты или настраивать сбор веб-данных. - Очистка данных - Модельное обучение - Тестирование" Вот собственно и софт: https://github.com/alphacep/vosk-api Я не стал разбираться с подробностями обучения, т.к. пока мне было не до того. А кому интересно, можете копнуть поглубже, благо все, кажется, с исходными кодами. Я так понял, что Vosk - это надстройка над Kaldi. https://en.wikipedia.org/wiki/Kaldi_(software) А вот и софт Kaldi: https://github.com/kaldi-asr/kaldi
0 | 0
Аватар
create
Проект SoundAgent
08:27 20.12.2021 №3046
Виктор Казаринов:
Вот собственно и софт: https://github.com/alphacep/vosk-api Я не стал разбираться с подробностями обучения, т.к. пока мне было не до того. А кому интересно, можете копнуть поглубже, благо все, кажется, с исходными кодами.
Да, Vosk использует Kaldi. В представленном примере Vosk нет никаких низкоуровневых процедур. Всё как любят красноглазые си-шники и питонщики. Кнопочку нажал и хоп, всё работает. С Kaldi полный швах. Мне нестыдно признаться, что я ничего не понимаю... Описания описаний для описания описаний... Вот перевод установки Калди для виндов: ******************************************************************************* Инструкции по установке родной Windows с Visual Studio Для установки cygwin см. Инструкции в ../INSTALLразделе . Примечания Рецепты (в egs/) не будут работать. Нет никаких обязательств по поддержке Windows. Порт Kaldi для Windows предназначен для опытных разработчиков, которые хотят программировать свои собственные приложения с помощью библиотек kaldi и могут самостоятельно устранять неполадки. Эти инструкции действительны с ноября 2017 года, поддерживаются Intel® MKL и OpenBLAS ATLAS не поддерживается, и я лично не намерен работать над его поддержкой, так как для этого требуется вся среда cygwin На данный момент (20171121) мы не поддерживаем CUDA. Мы могли бы снова добавить поддержку в будущем, но пока мы не выражаем никаких обязательств сделать это. Вы все еще можете создавать решения с помощью CUDA, но мы не предоставляем никакой поддержки и не проверяли, работают ли решения или нет. ******************************************************************************* Конечно... я лузер и не опытный разработчик. Это поток сознания нервного др@чилы. Это всё равно, если бы я в своём проекте написал: Запуск программы только для опытных разработчиков, осторожно при неправильном нажатии кнопки диск "C" может самопроизвольно отформатироваться. Я тут непричем, вы все лузеры... Короче, я демотивирован. Виктор конечно, не виноват, это не к нему мой гнев.
0 | 0
create
Проект SoundAgent
12:22 20.12.2021 12:32 20.12.2021 №3051
Kek:
Короче, я демотивирован. Виктор конечно, не виноват, это не к нему мой гнев.
Егунда, как говаривал товарисч дорогой наш Ленин. Я иду примерно таким путем: получаю первичные сенсорные данные в максимально переработанном виде. Таком, чтобы данные были максимально инвариантны к пространству-времени: к дискретизации по времени, квантованию по амплитуде. Тут как раз подходит выделение пиков частот. Данных - горстка. Что. собственно и производится во внутреннем ухе человека. И над чем работаешь ты Сергей. Затем начинается главное. Либо это все потом поступает на вход нейросетки, либо машины опорных векторов. либо еще чего-то. Вот это еще что-то для меня - онтологических движок, который, собственно и занимается запоминанием, выявлением новизны и закономерностей распознаванием классов и идентификацией. Короче, занимаюсь альтернативным андерграундом по отношению к глубоким сеткам. Продемонстрированный движок распознавания речи VOSK далек от идеала по множеству причин. Поэтому есть еще над чем работать, чтобы по-настоящему связать речь с глубоким пониманием того, о чем сообщает говорящий. Ведь многого из подразумеваемого в самой речи нет. А есть искажения, пропуски и т.д. Т.е. есть нечто такое в речи, что полностью отсутствует в первичных сенсорных данных и которые наш мозг может восстановить. Точно такое же встречается и при анализе изображений. Человеческий ум извлекает из изображений информацию, явно в ней не содержащуюся, например, партийность какого-то человека. И не только статистикой покрывается проблема распознавания речи, произнесенной разными людьми.
0 | 0
Аватар
create
Проект SoundAgent
12:31 20.12.2021 №3052
Виктор Казаринов:
Либо это все потом поступает на вход нейросетки, либо машины опорных векторов. либо еще чего-то.
Я хотел поделиться с публикой о "ещё что-то". Но демотивация пока еще не рассосалась. А идея заключается в корреляционном анализе неких данных о спектре. Результат корреляционного анализа автоматически без учителя выдает кластеризацию первичных сенсорных данных, которые можно класть в сетку.
0 | 0
Аватар
create
Проект SoundAgent
12:33 20.12.2021 №3053
Виктор Казаринов:
например, партийность какого-то человека.
Я бывшего комсомольского вожака чую из далека! И это не запах.
0 | 0
create
Проект SoundAgent
12:35 20.12.2021 №3054
Kek:
Я хотел поделиться с публикой о "ещё что-то".
А вот об этом. пожалуйста, поподробнее. Ведь твой экспериментальный образей системы нельзя сравнивать с промышленным решением, т.к. это вещи разных весовых категорий. Твой - весомее.
0 | 0
create
Проект SoundAgent
12:39 20.12.2021 12:40 20.12.2021 №3055
Kek:
Виктор Казаринов:
например, партийность какого-то человека.
Я бывшего комсомольского вожака чую из далека! И это не запах.
Аха-ха. А вот тут ты и прокололся. Я всегда занимался только техникой и никогда не был причастен ни к комсомолу ни к партиям каким-то. Когда писал про партийность и дедушку Ленина, сразу подумал, что попадешься на этот крючок. И попался!!! Ура, господа капиталисты!!! Хотя тьфу на них, капиталистов. Я технократ. Сильный ИИ все равно захоботит весь мир. Ну довольно офтопика. Ждем-с продолжения видеолекций.
0 | 0
Аватар
create
Проект SoundAgent
13:58 20.12.2021 №3056
Виктор Казаринов:
Kek:
Виктор Казаринов:
например, партийность какого-то человека.
Я бывшего комсомольского вожака чую из далека! И это не запах.
Аха-ха. А вот тут ты и прокололся. Я всегда занимался только техникой и никогда не был причастен
Я вовсе не тебя имел в виду. А вообще. Ладно, это все демотивация виновата...
0 | 0
Аватар
create
Проект SoundAgent
15:16 20.12.2021 15:16 20.12.2021 №3058
Виктор Казаринов:
Конечно, этот вариант хуже, чем разработки Сергея, но вот я решил выложить на сайт тестовый вариант программы автономного распознавания речи на основе VOSK.
А, ну это чуть менее круто чем творчество ув. КеКа, думал вы сами запедалили распознавалку. Мне кажется не нужно искать совсем уж лёгкие пути в нашем деле, всяких питонщиков тензерфловщиков пруд пруди, навык заюзать любу конечно представляет ценность, но не высокую, много конкуренции, порог входя низкий. Можно юзать либы вспомогательные, а не по существу, не по предметной области, иначе это уже простите юзерство какое то. Какой вы тогда ИИ-шник??? Я вот медитирую пока на спектрограмму начитанных циферок:
По сути звук это просто картинка, с точки зрения распознавания, на днях накидаю чонить чтобы циферки эти распознавала, пока "в лоб", каким то классификатором, бустингом вероятно, чтоб побыстрее, уверен качество распознавания будет высоким(>95%). Сделаю датасет так, каждой циферке начитаю раз по 20-100, а потом порежу на фрагменты, автоматом(надо подумать как). С них спектрограмму, её заресемплить в 20х20 а может и 10х10, с итерполяцией по максимуму и уже это будет вектором нормированным в 0,1. Но целые слова распознавать это не очень перспективное дело, слов много, начитать датасет такой не выйдет за разумное время, да и десятки(сотни) тысяч размерности таргета тоже не кул. Потом наверно поработаю с фонемами, так как слова состоят на уровне звука из "фонем", нужно будет их и распознавать и переводить в прото-слова, которым потом исправлять ошибки по словарю всех слов. Цель-максимум сделать чтобы программа на лету писала текст по звуку как гугл, минимум чтобы делала менее 20% ошибок.
0 | 0
Аватар
create
Проект SoundAgent
15:27 20.12.2021 15:39 20.12.2021 №3060
Kek:
Виктор Казаринов:
Вот собственно и софт: https://github.com/alphacep/vosk-api Я не стал разбираться с подробностями обучения, т.к. пока мне было не до того. А кому интересно, можете копнуть поглубже, благо все, кажется, с исходными кодами.
Да, Vosk использует Kaldi. В представленном примере Vosk нет никаких низкоуровневых процедур. Всё как любят красноглазые си-шники и питонщики. Кнопочку нажал и хоп, всё работает. С Kaldi полный швах. Мне нестыдно признаться, что я ничего не понимаю... Описания описаний для описания описаний... Вот перевод установки Калди для виндов: ******************************************************************************* Инструкции по установке родной Windows с Visual Studio Для установки cygwin см. Инструкции в ../INSTALLразделе . Примечания Рецепты (в egs/) не будут работать. Нет никаких обязательств по поддержке Windows. Порт Kaldi для Windows предназначен для опытных разработчиков, которые хотят программировать свои собственные приложения с помощью библиотек kaldi и могут самостоятельно устранять неполадки. Эти инструкции действительны с ноября 2017 года, поддерживаются Intel® MKL и OpenBLAS ATLAS не поддерживается, и я лично не намерен работать над его поддержкой, так как для этого требуется вся среда cygwin На данный момент (20171121) мы не поддерживаем CUDA. Мы могли бы снова добавить поддержку в будущем, но пока мы не выражаем никаких обязательств сделать это. Вы все еще можете создавать решения с помощью CUDA, но мы не предоставляем никакой поддержки и не проверяли, работают ли решения или нет. ******************************************************************************* Конечно... я лузер и не опытный разработчик. Это поток сознания нервного др@чилы. Это всё равно, если бы я в своём проекте написал: Запуск программы только для опытных разработчиков, осторожно при неправильном нажатии кнопки диск "C" может самопроизвольно отформатироваться. Я тут непричем, вы все лузеры... Короче, я демотивирован. Виктор конечно, не виноват, это не к нему мой гнев.
Да забейте вы на эту либу, либы для слабаков, да и стыдиться нечего тут, что не нашли мотивации ставить какое то гавно. ИМХО когда чтобы просто заюзать либу, нужно ковыряться в документации, ставить ещё другие либы и руками что то где то прописывать ещё и во многих местах, гуглить что то и тп. это признак очень хренового программирования и вероятней всего от этой либы будет больше проблем чем пользы. ЗЫ По поводу "профессионалов" и "промышленный код", это в основном всё чепуха. Вон на готайке одним праздным вечером какой то хрен с горы взял да переписал код atof(преобразование строки в число) который стал работать на порядок быстрее, я сам проверял и даже удивился честно говоря, думал за десятки лет уже всё работает на пределе оптимума. Я это к тому что для узких задачь смекалистый кодер может слабать алгоритм СРАВНИМЫЙ, а может и превосходящий, того что пилят в гуглах и амазонах, это вполне вероятно. Оно касается именно конкретного алгоритма, когда важна индивидуальная изобретательность, что не параллелится и не пайплайнится на толпы(простите команды). Конечно когда речь идёт о агрегатных системах вроде ОС или софта в миллионы строк кода и тысячи алгоритмов, толпа кодеров лучше чем один, но это мало касается инноваций в ИИ.
0 | 0
create
Проект SoundAgent
16:52 20.12.2021 17:22 20.12.2021 №3067
figaro:
Вон на готайке одним праздным вечером какой то хрен с горы взял да переписал код atof
Я таких самописных функций на С уже целый вагон набрал и написал, особо для импементации в микроконтроллерах. Не скажу, что на порядки быстрее, но удобнее. А ваш камень в мой огород бросаю обратно. Я лишь для того Сергею показал чужую либу. что можно что-то самописное в браузере запилить и будет работать быстро. Для себя же я пользую данную распознавалку только лишь потому, что занимаюсь более сложными ИИ вещами, например системой воображения. И у меня работает разработанная мною онтологическая система распознавания документов после однократного предъявления ей обучающего изображения документа. Поэтому насчет кодерства ваш вопрос не ко мне. Пишу только на С и в необходимых случаях на С++. Да, еще на самодельном Форте для самодельных процессоров на Верилоге. Вышесказанное, к сожалению, тоже оффтопик. Вот еще одна демка, но уже написанная мною с применением некоторых функций OpenCV прямо в браузере по пресловутой технологии WebAssembly: https://aigod.com/AuthenticatorWA/indexRemote_wa.html После загрузки нужно разрешить работу веб-камеры. И нажать внизу справа кнопку Dokumenerkennung. Затем нужно поднести к камере паспорт так, чтобы MRZ зона, расположенная внизу страницы помещалась в желтый прямоугольник. При этом если на паспорте есть фото с лицом, то оно также будет найдено и обведено прямоугольником. Но главное - это то, что вокруг букв и цифр в зоне MRZ будут появляться прямоугольники, которые прямо в браузере обнаруживаются с помощью горизонтальных и вертикальных пространственных частот. Это немного похоже на то. что продемонстрировал Сергей со звуком, т.к. тут тоже берутся максимальные пики частот в спектрах. Вот, работает в реалтайме в браузере (если у кого-то работает). Изображение паспорта никуда не отсылается. Если кто боится. распечатайте демо паспорт из википедии или еще откуда или отключите интернет во время работы с камерой.
0 | 0
Аватар
create
Проект SoundAgent
08:14 21.12.2021 №3068
+2 | 0
Аватар
create
Проект SoundAgent
10:03 21.12.2021 №3070
Виктор Казаринов:
Пишу только на С и в необходимых случаях на С++. Да, еще на самодельном Форте для самодельных процессоров на Верилоге.
Это по взрослому, респект.
0 | 0
Аватар
create
Проект SoundAgent
10:22 21.12.2021 №3072
Я посмотрел вашу прогу и видосы, всё круто, респектабельно, но подготовка датасета показалась слишком мудреной, так не должно быть. Тут тоже надо подумать об оптимальном варианте, важно чтобы это было максимально просто. Вы конечно суперкул, но нужно поспешно думать в направлении сделать либу для того чтобы КТО ТО ДРУГОЙ мог воспользоваться плодами ваши усилий. Для этого нужно подумать о протоколах взаимодействия, интерфейсах, что на вход, что на выход. Я вижу датасет для одного слова\фонемы, как один звуковой файл(-ов от разных чтецов) в папке, с последовательностью повторяющихся проговорок, которые потом режутся автоматом уже. Наименования папок соответствуют таргету слову\фонеме. Это ИМХО наиболее логично. Интерфейс выхода модуля захвата это поток векторов спектра float[], то есть каждый квант времени(например 40мс) по вектору float[]. Выходом будет колбек функция которая будет выплёвывать поток слов по мере их распознавания и восстановления.
0 | 0
1
2
3
4
шрифт+
шрифт-
Скачать
Вперёд
Назад

Главная Участники Жалобы  Поиск Исходный код О форуме