Как создать искусственный интеллект?
А ведь действительно, именно желание создать совершенный искусственный интеллект, будь то игровая модель или мобильная программа, сподвигла на путь программиста многих из нас. Проблема в том, что за тоннами учебного материала и суровой действительностью заказчиков, это самое желание было заменено простым стремлением к саморазвитию. Для тех, кто так и не приступил к исполнению детской мечты, далее краткий путеводитель по созданию настоящего искусственного разума.
Стадия 1. Разочарование
Когда мы говорим о создании хотя бы простых ботов, глаза наполняются блеском, а в голове мелькают сотни идей, что он должен уметь делать. Однако, когда дело доходит до реализации, оказывается, что ключом к разгадке реальной модели поведения является. математика. Если быть немного конкретнее, то вот список её разделов, которые необходимо проштудировать хотя бы в формате университетского образования:
Теория вероятностей и математическая статистика.
Это тот научный плацдарм, на котором будут строится ваше дальнейшее программирование. Без знания и понимания этой теории все задумки быстро разобьются о взаимодействие с человеком, ведь искусственный разум на самом деле не больше, чем набор формул.
Стадия 2. Принятие
Когда спесь немного сбита студенческой литературой, можно приступать к изучению языков. Бросаться на LISP или другие функциональные языки пока не стоит, для начала надо научиться работать с переменными и однозначными состояниями. Как для быстрого изучения, так и дальнейшего развития прекрасно подойдёт Python, но в целом можно взять за основу любой язык, имеющий соответствующие библиотеки.
Стадия 3. Развитие
Теперь переходим непосредственно к теории ИИ. Их условно можно разделить на 3 категории:
Слабый ИИ – боты, которых мы видим в компьютерных играх, или простые подручные помощники, вроде Siri. Они или выполняют узкоспециализированные задачи или являются незначительным комплексом таковых, а любая непредсказуемость взаимодействия ставит их в тупик.
Сильный ИИ – это машины, интеллект которых сопоставим с человеческим мозгом. На сегодняшний день нет реальных представителей этого класса, но компьютеры, вроде Watson очень близки к достижению этой цели.
Совершенные ИИ – будущее, машинный мозг, который превзойдёт наши возможности. Именно об опасности таких разработок предупреждают Стивен Хоккинг, Элон Маск и кинофраншиза «Терминатор».
Естественно, начинать следует с самых простых ботов. Для этого вспомните старую-добрую игру «Крестики-нолики» при использовании поля 3х3 и постарайтесь выяснить для себя основные алгоритмы действий: вероятность победы при безошибочных действиях, наиболее удачные места на поле для расположения фигуры, необходимость сводить игру к ничьей и так далее.
Сыграв несколько десятков партий и анализируя собственные действия, вы наверняка сможете выделить все важные аспекты и переписать их в машинный код. Если нет, то продолжайте думать, а эта ссылка здесь полежит на всякий случай.
К слову, если вы всё-таки взялись за язык Python, то создать довольно простого бота можно обратившись к этому подробному мануалу. Для других языков, таких как C++ или Java, вам также не составит труда найти пошаговые материалы. Почувствовав, что за созданием ИИ нет ничего сверхъестественного, вы сможете смело закрыть браузер и приступить к личным экспериментам.
Стадия 4. Азарт
Теперь, когда дело сдвинулось с мёртвой точки, вам наверняка хочется создать что-то более серьёзное. В этом вам поможет ряд следующих ресурсов:
Как вы поняли даже из названий, это API, которые позволят без лишних затрат времени создать некоторое подобие серьёзного ИИ.
Стадия 5. Работа
Теперь же, когда вы уже вполне ясно представляете, как ИИ создавать и чем при этом пользоваться, пора выводить свои знания на новый уровень. Во-первых, для этого потребуется изучение дисциплины, которое носит название «Машинное обучение». Во-вторых, необходимо научиться работать с соответствующими библиотеками выбранного языка программирования. Для рассматриваемого нами Python это Scikit-learn, NLTK, SciPy, PyBrain и Nump. В-третьих, в развитии никуда не обойтись от функционального программирования. Ну и самое главное, вы теперь сможете читать литературу о ИИ с полным пониманием дела:
И да, вся или почти вся литература по данной тематике представлена на иностранном языке, поэтому если хотите заниматься созданием ИИ профессионально необходимо подтянуть свой английский до технического уровня. Если вы только начинаете путь к мечте, советуем записаться на бесплатный двухчасовой интенсив по основам программирования.
В остальном, ваше дальнейшее развитие будет зависеть лишь от практики и желания усложнять алгоритмы. Но будьте осторожны: возможно совершенный искусственный разум опасен для человечества?
Освоить востребованную профессию в Data Science можно всего за полтора года на курсах GeekBrains. После учёбы вы сможете работать по специальностям Data Scientist, Data Analyst, Machine Learning, Engineer Computer Vision-специалист или NLP-специалист.
На этой неделе вы могли прочитать крайне мотивирующей кейс от Валерия Турова, где он рассказал об одной из своих целей, которая привела в профессию – желанию познать принцип работы и научиться создавать самому игровых ботов.
А ведь действительно, именно желание создать совершенный искусственный интеллект, будь то игровая модель или мобильная программа, сподвигла на путь программиста многих из нас. Проблема в том, что за тоннами учебного материала и суровой действительностью заказчиков, это самое желание было заменено простым стремлением к саморазвитию. Для тех, кто так и не приступил к исполнению детской мечты, далее краткий путеводитель по созданию настоящего искусственного разума.
Стадия 1. Разочарование
Когда мы говорим о создании хотя бы простых ботов, глаза наполняются блеском, а в голове мелькают сотни идей, что он должен уметь делать. Однако, когда дело доходит до реализации, оказывается, что ключом к разгадке реальной модели поведения является. математика. Если быть немного конкретнее, то вот список её разделов, которые необходимо проштудировать хотя бы в формате университетского образования:
Теория вероятностей и математическая статистика.
Это тот научный плацдарм, на котором будут строится ваше дальнейшее программирование. Без знания и понимания этой теории все задумки быстро разобьются о взаимодействие с человеком, ведь искусственный разум на самом деле не больше, чем набор формул.
Стадия 2. Принятие
Когда спесь немного сбита студенческой литературой, можно приступать к изучению языков. Бросаться на LISP или другие функциональные языки пока не стоит, для начала надо научиться работать с переменными и однозначными состояниями. Как для быстрого изучения, так и дальнейшего развития прекрасно подойдёт Python, но в целом можно взять за основу любой язык, имеющий соответствующие библиотеки.
Стадия 3. Развитие
Теперь переходим непосредственно к теории ИИ. Их условно можно разделить на 3 категории:
Слабый ИИ – боты, которых мы видим в компьютерных играх, или простые подручные помощники, вроде Siri. Они или выполняют узкоспециализированные задачи или являются незначительным комплексом таковых, а любая непредсказуемость взаимодействия ставит их в тупик.
Сильный ИИ – это машины, интеллект которых сопоставим с человеческим мозгом. На сегодняшний день нет реальных представителей этого класса, но компьютеры, вроде Watson очень близки к достижению этой цели.
Совершенные ИИ – будущее, машинный мозг, который превзойдёт наши возможности. Именно об опасности таких разработок предупреждают Стивен Хоккинг, Элон Маск и кинофраншиза «Терминатор».
Естественно, начинать следует с самых простых ботов. Для этого вспомните старую-добрую игру «Крестики-нолики» при использовании поля 3х3 и постарайтесь выяснить для себя основные алгоритмы действий: вероятность победы при безошибочных действиях, наиболее удачные места на поле для расположения фигуры, необходимость сводить игру к ничьей и так далее.
Сыграв несколько десятков партий и анализируя собственные действия, вы наверняка сможете выделить все важные аспекты и переписать их в машинный код. Если нет, то продолжайте думать, а эта ссылка здесь полежит на всякий случай.
К слову, если вы всё-таки взялись за язык Python, то создать довольно простого бота можно обратившись к этому подробному мануалу. Для других языков, таких как C++ или Java, вам также не составит труда найти пошаговые материалы. Почувствовав, что за созданием ИИ нет ничего сверхъестественного, вы сможете смело закрыть браузер и приступить к личным экспериментам.
Стадия 4. Азарт
Теперь, когда дело сдвинулось с мёртвой точки, вам наверняка хочется создать что-то более серьёзное. В этом вам поможет ряд следующих ресурсов:
Как вы поняли даже из названий, это API, которые позволят без лишних затрат времени создать некоторое подобие серьёзного ИИ.
Стадия 5. Работа
Теперь же, когда вы уже вполне ясно представляете, как ИИ создавать и чем при этом пользоваться, пора выводить свои знания на новый уровень. Во-первых, для этого потребуется изучение дисциплины, которое носит название «Машинное обучение». Во-вторых, необходимо научиться работать с соответствующими библиотеками выбранного языка программирования. Для рассматриваемого нами Python это Scikit-learn, NLTK, SciPy, PyBrain и Nump. В-третьих, в развитии никуда не обойтись от функционального программирования. Ну и самое главное, вы теперь сможете читать литературу о ИИ с полным пониманием дела:
И да, вся или почти вся литература по данной тематике представлена на иностранном языке, поэтому если хотите заниматься созданием ИИ профессионально необходимо подтянуть свой английский до технического уровня. Если вы только начинаете путь к мечте, советуем записаться на бесплатный двухчасовой интенсив по основам программирования.
В остальном, ваше дальнейшее развитие будет зависеть лишь от практики и желания усложнять алгоритмы. Но будьте осторожны: возможно совершенный искусственный разум опасен для человечества?
Освоить востребованную профессию в Data Science можно всего за полтора года на курсах GeekBrains. После учёбы вы сможете работать по специальностям Data Scientist, Data Analyst, Machine Learning, Engineer Computer Vision-специалист или NLP-специалист.
Пусть компьютер сам принимает решение или пишем ИИ для игры вместе
Вы когда-нибудь задумывались о том, насколько просто написать свой искусственный интеллект, который сам будет принимать решения в игре? А ведь это действительно просто. Пусть для начала он принимает случайные решение, но позже вы можете его воспитать, научить анализировать ситуацию, и тогда он станет принимать осознанные решения. В этой статье я расскажу, как я писал своего бота, а также покажу, как вы за несколько минут можете написать своего. Наш компьютер будет играть в клон игры Трон, а точнее в ту часть, где нужно на мотоцикле победить врагов.
Под катом gif-файлов мегабайт на 10.
Об игре
В игре вы управляете мотоциклом, который оставляет за собой стену из света. Игровое поле ограничено, а у соперников такие же мотоциклы. Мотоцикл едет постоянно, вы лишь можете поворачивать. Свободное место на поле кончается, и избегать препятствия становится сложнее. Побеждает тот, кто дольше всех продержится. Клон игры я сделал браузерным многопользовательским с использованием node.js и socket.io. Управление из двух кнопок – поворот влево и поворот вправо.
Интерфейс бота
При поступлении от сервера команды обновления данных мотоциклов (было совершено их передвижение) я проверяю, есть ли у меня вообще подконтрольный мотоцикл, не столкнулся ли он еще и был ли он перемещён, и, в случае успеха, я вызываю основной метод для работы ИИ — update().
Интерфейс готов, теперь можно добавить сам ИИ.
Искусственный интеллект
Когда я решил написать бота, я понятия не имел, как это можно сделать. Я попробовал очень простой код:
Поведение было примерно таким:
Я смотрел на него и испытывал большую радость, мне казалось, что он теперь самостоятельный. Казалось, что он сам ищет попытки выжить, бьётся там, как живой. Трогательное зрелище.
Но хотелось, чтобы он жил как можно больше. Я стал искать информацию о том, как пишут ИИ к играм. Нашел статьи, которые описывали разные подходы. Но я искал что-то чрезвычайно простое. Я нашел на хабре в одной из статей про бота для игры вроде Zuma упоминание волнового метода. Он же алгоритм Ли. Мне он показался очень простым и подходящим. Это алгоритм поиска кратчайшего пути из одной точки в другую по полю, где клетки могут быть либо свободными, либо занятыми. Суть простая. Мы начинаем из точки назначения, присваиваем ей значение 1 и помечаем все соседние свободные клетки цифрой на единицу больше. Затем берём все соседние свободные помеченных и снова помечаем на единицу больше. Так расширяемся на всё поле, пока не дойдем до точки назначения. А путь строим поиском из соседних по уменьшению числа, пока не дойдем до 1. Я смотрел алгоритмы поиска кратчайших путей в графах, но этот мне показался наиболее подходящим.
Я перенёс алгоритм копипастой из страницы в вики, дал ему имя BotSocket.prototype.algorithmLee. Для поля я создал сначала объект battleground, в котором при каждом обновлении помечал занятые точки с их координатами. А в алгоритме Ли сводил это поле к такому же, но с шагом 1.
Нужно было как-то определять точку назначения. Я решил выбирать её случайно через определенные интервалы времени. Сделал метод для поиска случайной свободной точки на поле:
Теперь я мог переписать update:
Здесь упоминается метод moveToPoint, который поворачивает, если нужно, чтобы достигнуть первую точку из кратчайшего пути с учётом текущего направления.
Позже я решил сделать ботов более агрессивными и вместо случайной желаемой точки, я искал точку впереди врагов, чтобы перекрыть им путь. Или чтобы они не играли так долго сами с собой.
Бот на стороне клиента
Я решил попробовать перенести бота на клиентскую часть. Так как проект на node.js, я могу использовать написанный код для бота и на стороне клиента. Для этого я расширил BotSocket отдельным клиентским файлом, который переопределял методы emit() и control(), чтобы правильно взаимодействовать с сервером без ссылки на объект game.
Локально всё работало отлично, а после деплоя на удалённый сервер была какая-то странная картина:
Долго думая, я понял, что дело в задержке. Бот отправлял команду поворота, но она доходила после обновления его позиции на сервере, отчего он часто не мог попасть на прямой путь к желаемой точке. Но я хотел нормального бота на клиентской стороне. Поэтому решил учитывать задержку. Для этого написал снова расширение BotSocket. Статья получается длинной, так что опишу основные решения. Перед вызовом алгоритма Ли вместо текущей точки я подставлял прогнозируемое положение с учетом текущего положения и направления, а так же множителя задержки. Множитель задержки – это число, во сколько раз превосходит задержка частоту обновления положения на сервере. Предсказание будущей точки мне еще понадобилось в методе moveToPoint().
Предсказание работало, если играл один. Но если были другие участники, то бот не учитывал это и направлял туда, где через некоторое время уже проехал другой игрок. Для решения этой проблемы я изменил метод, который помечает клетки поля занятыми. Я стал их помечать занятыми в некотором радиусе движения мотоциклов. Радиус зависит от множителя задержки.
Предварительно я снабдил бота функциями отладки, который рисовали на поле желаемую точку и занятые точки. Моя версия клиентского бота с учетом задержки теперь двигается так:
Мой красненький, остальные серверные.
Самое важное – попробуйте сделать бота сами
Основная цель этой статьи – пробудить интерес к написанию бота. Я сделал много, чтобы победить вашу лень. Для этого я добавил возможность подгружать свой собственный скрипт с ботом, который будет расширять мой базовый клиентский класс. Зайдите на проект и нажмите на текст «Show options for room with your own bot», а затем на кнопку «Create room for test your own bot». Будет создана комната, где можно легко применять ботов, по умолчанию вашим ботом будет бот без учета задержки. Теперь настало время для вашего кода.
Два простых варианта для использования вашего кода в деле, используйте любой:
Если вы определились с методом ввода вашего кода, попробуйте переопределить методы класса BotSocket. Для начала самое простое:
После этого пересоздайте объект botSocket, введя
При этом код на странице сам пересоздаст и заполнит объект. Этим вы измените стандартное поведение бота на случайное. А дальше уже дело для вашей фантазии или глубоких знаний.
Вы так же можете подключить скрипт моего улучшенного бота с учетом задержки, вставив в url для бота https://raw.github.com/rnixik/tronode-js/master/public/javascripts/MyBotSocketClient.js
Заключение
Я рассказал, как я создавал своего ИИ на сервере, затем как перенес его на клиент и как пытался научить его играть с учетом высокого пинга. Я очень надеюсь, что смог заинтересовать вас, и вы попробовали написать свой ИИ, если еще ни разу этого не делали раньше. Конечно, в играх высокого класса используются совсем другие подходы, но начинать стоит с малого.
Если у вас нет под рукой node.js, вы можете воспользоваться развернутыми мной приложениями:
1) tronode.livelevel.net — самая дешевая VPS на DigitalOcean,
2) tronode-js.herokuapp.com — бесплатная виртуальная единица на Heroku.
Первый, скорее всего, первым может не справиться с нагрузкой, а второй на некоторых компьютерах сбрасывает socket.io-транспорт в xhr-polling, из-за этого игра очень сильно лагает.
Если вы хотите узнать больше, о том, как я программировал игровую логику, то можете прочитать здесь. Там же о развертке node.js и немного о графической части.
Если у вас нет аккаунта на хабре, то задать вопросы или прислать свои интересные предложения можете мне на почту dev@1i1.be.
Искусственный Интеллект в домашних условиях.
Я думаю, что в наш век высоких технологий и повсеместной компьютеризации многие из вас задумывались о том, почему мы до сих пор не ведем с компьютером полноценного диалога? Да, есть Siri, Cortana, Google, но они созданы для решения конкретных задач и не слишком приспособлены даже для имитации живого общения. Более «продвинутые юзеры» вспомнят о нейронных цепях. Их можно запрограммировать на абсолютно любой набор действий, в том числе и на общение, но в домашних условиях, увы, это пока невозможно.
Для этого нам понадобится, в первую очередь, программа, способная распознавать нашу речь, отвечать тоже голосом и при этом исполнять заданные команды.
Чтобы мои слова не казались рекламой конкретной программы, сразу замечу, что используемое мною ПО не является самым мощным, дешевым, лучшим и т.д. Это самая простая в освоении программа, которая прекрасно подойдет новичкам, поэтому речь пойдет именно о ней. Но я рекомендую, когда набьете руку, постепенно переходить на другие, более глубокие и функциональные программы, например, EventGhost.
Итак, для начала нам понадобится программа VoxCommando, микрофон и свободное время.
Я не буду здесь расписывать инструкцию по установке, русификации и настройке, эта информация, обычно дается вместе с программой. Кто ищет, тот всегда найдет.
Предположим, вы установили, настроили и адаптировали программу под себя. Что дальше?
Вы можете заметить, что программа работает по принципу обработчика событий. Как только происходит событие, которое Вокс способен воспринять, программа может выполнить любое заданное действие. Но, самое главное, она способна отлично понимать русскую речь и так же на русском языке отвечать вам.
С программой так же идет множество плагинов, которые позволяют значительно расширить функционал, а так же подключаться к другим устройствам.
Итак, начнем разбор.
Собеседник, информатор, органайзер.
Например, мои команды выполняет Алиса (имя выбрано мною). Все ее реплики, так или иначе, намекают на то, что ей не слишком нравится ее работа, но и жаловаться ей не на что, она более-менее счастлива. Да, я всегда помню, что это «понарошку», что я же и прописывал подобные фразы, но работать с личностью приятнее, чем с бездушным автоматом.
Поэтому, советую потренироваться и усвоить базовые принципы работы программы, обучая ее отвечать на вопросы «Кто ты?», «Как дела?» и т.п. Научите ее отвечать на приветствия и прощания. Проявите фантазию и творческий подход.
Не пытайтесь сразу же создавать сложные, многовариативные команды. В дальнейшем вы сможете усовершенствовать их, когда полностью освоите более сложные приемы.
Это возможно, благодаря плагину WUnder, который прекрасно работает в наших широтах, несмотря на свое заграничное происхождение.
Так выглядит окно плагина. Укажите свое местоположение. Программа подскажет вам ближайшие метеостанции, или вы можете выбрать место по карте.
Нажав кнопку «Pick Variables», вы увидите список всех данных, которые можно узнать с помощью плагина. Перетаскивая их в любую из пяти строк, вы можете скомбинировать любой набор информации и в дальнейшем просто вызывать его через команды самого плагина. Разумеется, их можно озвучить, причем в любой форме.
Например, моя Алиса отвечает на вопросы о погоде, выбирая один из шести шаблонов ответа, подставляя в них нужные данные из плагина, а так же различает запросы на сегодня/завтра, дни недели, время дня и проч.
Регулярно, через определенный промежуток времени, программа проверяет ваш календарь и устанавливает таймеры на ближайшие события. Точнее, немного раньше, как вы настроите.
Когда таймер срабатывает (Например, за час до начала мероприятия), Вокс генерирует событие, прикрепляя к нему данные о той записи календаря, которая вызвала это событие.
Вы же можете создать команду, которая будет реагировать на подобные события и напоминать вам о них.
Например, моя Алиса получает информацию за час до мероприятия и говорит мне примерно следующее: «Напоминаю, что через час начинается /название мероприятия/, /описание мероприятия/. Пожалуйста, не заставляйте меня потом упрекать вас в забывчивости или невнимательности.» Опять же, все сказанное зависит только от вашей фантазии.
По команде «Озвучь список дел на сегодня (завтра, вчера, пятницу и т.д.), Алиса зачитывает все записи календаря на указанный день.
На сегодня все. В следующем посте расскажу о функционале Умного Дома, а так же работе с программой через смартфон.
Если у кого-то возникнут вопросы о работе программы или реализации каких-либо функций, милости прошу в комментарии. Постараюсь ответить на все вопросы по темам этого поста.
Ссылки не даю, ибо не рекламы ради пишется пост.
Организовать помещение и запилить Джарвиса. Забавно конечно, но как-то странно для моей однушки.
Но мне нужен искусственный интеллект, чтобы дочитать этот пост и хоть что-то из него сделать.
На самом деле было бы круто, чтобы у подобной программы была симуляция возможности выбора (ответа или действия, в зависимости от ситуации). Это ведь присуще ИИ. А еще обучить распознавать различные варианты голосовых указаний, например фразы: «я хочу кофе» и «сделай мне кофейку» были восприняты одинаково. В принципе во втором случае сложного ничего нет, просто потратить время на запись возможных вариантов приказа. Была бы классной возможность самообучения через интернет, например несколько пользователей подобных программ записывали обучение своих симуляторов ИИ в какой либо динамически изменяющийся файл, а программа на другом компьютере имела бы доступ к этому файлу и самообучалась.
натуральнее ее звучания я пока что не встречал
Решил попробовать, но ограничение в 40 команд убивает просто, не могли бы помочь решить данную проблему? Весь гугл перерыл ничего не нашел
скайнет на коленке без смс и регистрации
А есть такая штука для мака? Ну или будет ли это всё работать через вайнскин?
Супер. Большое спасибо автору. Вопрос: насколько легко переносить с одного устройства на другое, есть ли возможность синхронизировать настройки между разными устройствами?
Всё так не получится скинуть уже готовый и настроенный вариант программы для лиги лени?
Оп, а не было проблем с командами? Сделал все правильно, а прога понимает меня далеко не всегда и не с первого раза. Мик нормальный, проблем с речью нет. В чем может быть беда?
я знаю прогу получше вот ссылка : https://freevoc.000webhostapp.com
Привет, бро! Очень интересно рассказываешь. Планирую выделить пол него старенький ноут, гига 3 оперативки. Потянет, если только этим будет заниматься?
а более детальное описание настройки? к примеру про настройку «личности»? и про вариативность в ответах?
Подписался, очень интересно почитать про умный дом.
Еще и от разбирающейся в этом девушки.
Получается как у медведя игрушечного, которого подарили дочке на день рождения. Он бодро отвечает на вопросы, рассказывает сказки интересуется как дела. Алиса просто более функциональна.
А можно ли её запрограммировать по команде отправлять что либо в сериалпорт? Прикрутить к ней ардуину как устройство вывода.
На Линуксе кто-нибудь запустил?
Нейронную сеть научили практически идеально копировать человеческий голос
В прошлом году компания DeepMind, занимающаяся разработками технологий искусственного интеллекта, поделилась деталями о своем новом проекте WaveNet – нейронной сети глубинного обучения, использующейся для синтезации реалистичной человеческой речи. На днях была выпущена усовершенствованная версия этой технологии, которая будет использоваться в качестве основы цифрового мобильного ассистента Google Assistant.
Система голосового синтезирования (также известная как функция преобразования «текст-в-речь», text-to-speech, TTS) обычно строится на базе одного из двух основных методов. Конкатенативный (или компилятивный) метод подразумевает построение фраз путем сбора отдельных кусков записанных слов и частей, заранее записанных с привлечением актера озвучания. Основным недостатком такого метода является необходимость постоянной замены звуковой библиотеки всякий раз, когда происходят какие-нибудь обновления или вносятся изменения.
Другой метод носит название параметрического TTS, и его особенностью является использование наборов параметров, с помощью которых компьютер генерирует нужную фразу. Минус метода в том, что чаще всего результат проявляется в виде нереалистичного или так называемого роботизированного звучания.
Что же касается WaveNet, то она производит звуковые волны с нуля на базе системы, работающей на основе сверточной нейронной сети, где генерация звука происходит в несколько слоев. Сначала для тренировки платформы синтезации «живой» речи ей «скармливают» огромный объем образцов, при этом отмечая, какие звуковые сигналы звучат реалистично, а какие нет. Это наделяет голосовой синтезатор возможностью воспроизводить натуралистичную интонацию и даже такие детали, как чмокающие звуки губами. В зависимости от того, какие образцы речь прогоняются через систему, это позволяет ей развить уникальный «акцент», что в перспективе может использоваться для создания множества разных голосов.
Пожалуй, самым большим ограничением системы WaveNet являлось то, что для ее работы требовалось наличие огромного объема вычислительной мощности, и даже при выполнении этого условия она не отличалась скоростью работы. Например, для генерации 0,02 секунды звука ей требовалось около 1 секунды времени.
Спустя год работы инженеры DeepMind все-таки нашли способ, как улучшить и оптимизировать систему таким образом, что теперь она способна производить сырой звук длительностью в одну секунду всего на 50 миллисекунд, что в 1000 раз быстрее ее изначальных возможностей. Более того, специалистам удалось повысить частоту дискретизации звука с 8-битного до 16-битного, что положительно сказалось на тестах с привлечением слушателей. Благодаря этим успехам, для WaveNet была открыта дорога к интеграции в такие потребительские продукты, как Google Assistant.
В настоящий момент WaveNet может использоваться для генерации английских и японских голосов через Google Assistant и все платформы, где используется этот цифровой ассистент. Так как система может создавать особый тип голосов в зависимости от того, какой набор образцов был ей предоставлен для обучения, то в скором времени Google, вероятнее всего, внедрит в WaveNet поддержку синтезации реалистичной речи и на других языках, и в том числе с учетом их местных диалектов.
Речевые интерфейсы становятся все более и более распространенными на самых разных платформах, однако их явно выраженная неестественная природа звучания отталкивает многих потенциальных пользователей. Попытки компании DeepMind усовершенствовать эту технологию, безусловно, поспособствуют более широкому распространению таких голосовых систем, а также позволят улучшить пользовательский опыт от их использования.