SlideShare a Scribd company logo
Александр Панин, Как мы делали кроссплатформенную библиотеку SpeechKit на C++
Как мы делали
кроссплатформенную
библиотеку SpeechKit на C++
Александр Панин
Александр Панин, Как мы делали кроссплатформенную библиотеку SpeechKit на C++
Александр Панин, Как мы делали кроссплатформенную библиотеку SpeechKit на C++
Александр Панин, Как мы делали кроссплатформенную библиотеку SpeechKit на C++
Александр Панин, Как мы делали кроссплатформенную библиотеку SpeechKit на C++
Александр Панин, Как мы делали кроссплатформенную библиотеку SpeechKit на C++
Распознавание речи в Навигаторе
«Поехали домой»
«Улица Льва Толстого 16»
«Вижу ДТП в правом ряду»
Александр Панин, Как мы делали кроссплатформенную библиотеку SpeechKit на C++
Yandex SpeechKit
Ограничения первой версии
Платформенно-зависимая часть (PAL) не рассчитана на
использование в библиотеке
Конфликты версий библиотек
Большой объем кода
Yandex SpeechKit 2.0
Цели
Кроссплатформенность и минимум дублирования кода
Одинаково стабильное поведение на всех платформах
Производительность
Удобная, компактная и легко интегрируемая библиотека
Кроссплатформенность
Кроссплатформенность
С
Assembler
Система сборки
1gyp
generate
libspeechkit.gyp
speechkit.gyp
lips.gyp
gyp
build.хml, android.mk
.xcodeproj
.sln, .csproj
build
ant, ndk-build
xcode build, libtool
ms build
binaries
.a, .so, .dll
deploy
bash, gradle
bash, lipo, pod
nuget
library project, .aar
framework, cocoapod
nuget package
doc
doxygen
html
pdf
2 версии SpeechKit
Внешняя Внутренняя
Особенности
Platform Abstraction Layer
Android
iOS
WP8
Java
Objective C
C#
JNI
Objective C++
C++/CLI
C++
JNI
1Минимум JNI
JNI -> Java
Конфликты имен в статических
библиотеках в iOS
Коверкание имен (mangling)
Mangling
Создание Framework в iOS
Правильные проектные файлы
Сборка библиотеки и зависимостей
Создание универсальной библиотеки
Сборка ресурсов
Копирование ресурсов, библиотеки, заголовочных
файлов в каталог framework
WP8
1Плохая поддержка С (С89)
Windows Phone Runtime Component
Управление памятью
1
Очень конкурентная среда
Время жизни объектов
Решение: умные указатели
Резюме
Android
iOS
WP8
Принципы
Ядро на C++
Тонкий слой между ядром и PAL
gyp
Используемые решения
gyp
ant, ndk-build, xcodebuild, libtool, msbuild
bash, gradle, lipo, pod, nuget
doxygen
Yandex SpeechKit
Качество распознавания общих
поисковых запросов на русском языке
84%
Качество распознавания гео запросов
на русском языке
94%
Среднее время ответа
секунда
Стандартный UI
Как интегрировать SpeechKit с UI для Android
строк кода
Какие задачи можно решать с помощью
SpeechKit:
Создание голосового интерфейса для управление
сервисом/приложением (голосовые команды)
Голосовой поиск по контенту приложения
Диктовка коротких текстов (заметки, смс, комментарии и пр.), т.е.
перевод речи в текст
В каких приложениях/сервисах можно
использовать SpeechKit
Геоинформационные
Поиск по контенту
Команды и меню
api.yandex.ru/speechkit/
43
clubs.ya.ru/speechkit/
44
Спасибо за внимание!
Александр Панин
Руководитель группы
agpanin@yandex-team.ru

More Related Content

PDF
Александр Панин, Как мы делали кроссплатформенную библиотеку SpeechKit на C++
PDF
PDF
Введение в язык программирования Go
PDF
Go в автобусе
PDF
Go в продакшене Яндекса: отчёт после года использования — Вячеслав Бахмутов
PDF
Плюсы и минусы Go для разработчиков на C++, Вячеслав Бахмутов
PDF
Как ВКонтакте использует Go
PDF
Rust - GDG DevFest Siberia 2016
Александр Панин, Как мы делали кроссплатформенную библиотеку SpeechKit на C++
Введение в язык программирования Go
Go в автобусе
Go в продакшене Яндекса: отчёт после года использования — Вячеслав Бахмутов
Плюсы и минусы Go для разработчиков на C++, Вячеслав Бахмутов
Как ВКонтакте использует Go
Rust - GDG DevFest Siberia 2016

What's hot (20)

PDF
Готовим код 
в мир открытых исходников
PDF
Илья Биин: Организация совместной работы Go и Python-based сервисов в Ostrovo...
PDF
Игорь Новак — Редакторы
PDF
Women Techmakers Novosibirsk, первый митап
PDF
BeeGo для веб приложений, API и демонов
PDF
Плюсы и минусы Go для разработчиков на C++, Вячеслав Бахмутов
PDF
Подключение внешних библиотек в python
PDF
Работаем с API по-взрослому - Максим Кислов (Badoo)
PDF
Опыт внедрения Docker .
PPTX
Язык программирования PHP
PDF
Наиболее интересные технологические нововведения IBM i
PDF
PiterPy 2015 - Трансдюсеры и Python
PDF
Сравнение технологий aiopg & asyncpg, Алексей Фирсов. 22 июня, 2019
PDF
Rust - GDG DevFest 2016 Nizhny Novgorod
PDF
Дизайн платформа в Avito - Александр Лобашев (Avito)
PDF
Разработка декстопных приложений для linux (Владимир Яковлев)
PDF
Данил Ильиных и Владимир Иванов, «Велогосипед»
PDF
Стабы для фронтенда - Никита Мостовой (HeadHunter)
PPT
Илья Ковалевский "Что такое Qt и что с ним можно сделать"
PDF
Баг-трекер по-новому: что и почему JetBrains изменил в последней версии YouTrack
Готовим код 
в мир открытых исходников
Илья Биин: Организация совместной работы Go и Python-based сервисов в Ostrovo...
Игорь Новак — Редакторы
Women Techmakers Novosibirsk, первый митап
BeeGo для веб приложений, API и демонов
Плюсы и минусы Go для разработчиков на C++, Вячеслав Бахмутов
Подключение внешних библиотек в python
Работаем с API по-взрослому - Максим Кислов (Badoo)
Опыт внедрения Docker .
Язык программирования PHP
Наиболее интересные технологические нововведения IBM i
PiterPy 2015 - Трансдюсеры и Python
Сравнение технологий aiopg & asyncpg, Алексей Фирсов. 22 июня, 2019
Rust - GDG DevFest 2016 Nizhny Novgorod
Дизайн платформа в Avito - Александр Лобашев (Avito)
Разработка декстопных приложений для linux (Владимир Яковлев)
Данил Ильиных и Владимир Иванов, «Велогосипед»
Стабы для фронтенда - Никита Мостовой (HeadHunter)
Илья Ковалевский "Что такое Qt и что с ним можно сделать"
Баг-трекер по-новому: что и почему JetBrains изменил в последней версии YouTrack
Ad

More from Yandex (20)

PDF
Предсказание оттока игроков из World of Tanks
PDF
Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...
PDF
Структурированные данные, Юлия Тихоход, лекция в Школе вебмастеров Яндекса
PDF
Представление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров Яндекса
PDF
Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...
PDF
Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...
PDF
Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...
PDF
Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...
PDF
Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...
PDF
Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...
PDF
Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...
PDF
Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...
PDF
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеров
PDF
Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...
PDF
Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...
PDF
Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...
PDF
Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...
PDF
Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...
PDF
Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...
PDF
Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...
Предсказание оттока игроков из World of Tanks
Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...
Структурированные данные, Юлия Тихоход, лекция в Школе вебмастеров Яндекса
Представление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров Яндекса
Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...
Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...
Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...
Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...
Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...
Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...
Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...
Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеров
Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...
Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...
Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...
Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...
Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...
Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...
Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...
Ad

Александр Панин, Как мы делали кроссплатформенную библиотеку SpeechKit на C++