Александр Панин, Как мы делали кроссплатформенную...
TRANSCRIPT
![Page 1: Александр Панин, Как мы делали кроссплатформенную библиотеку SpeechKit на C++](https://reader033.vdocuments.mx/reader033/viewer/2022051111/554e7720b4c905f66a8b4e52/html5/thumbnails/1.jpg)
![Page 2: Александр Панин, Как мы делали кроссплатформенную библиотеку SpeechKit на C++](https://reader033.vdocuments.mx/reader033/viewer/2022051111/554e7720b4c905f66a8b4e52/html5/thumbnails/2.jpg)
Как мы делали
кроссплатформенную
библиотеку SpeechKit на C++
Александр Панин
![Page 3: Александр Панин, Как мы делали кроссплатформенную библиотеку SpeechKit на C++](https://reader033.vdocuments.mx/reader033/viewer/2022051111/554e7720b4c905f66a8b4e52/html5/thumbnails/3.jpg)
![Page 4: Александр Панин, Как мы делали кроссплатформенную библиотеку SpeechKit на C++](https://reader033.vdocuments.mx/reader033/viewer/2022051111/554e7720b4c905f66a8b4e52/html5/thumbnails/4.jpg)
![Page 5: Александр Панин, Как мы делали кроссплатформенную библиотеку SpeechKit на C++](https://reader033.vdocuments.mx/reader033/viewer/2022051111/554e7720b4c905f66a8b4e52/html5/thumbnails/5.jpg)
![Page 6: Александр Панин, Как мы делали кроссплатформенную библиотеку SpeechKit на C++](https://reader033.vdocuments.mx/reader033/viewer/2022051111/554e7720b4c905f66a8b4e52/html5/thumbnails/6.jpg)
![Page 7: Александр Панин, Как мы делали кроссплатформенную библиотеку SpeechKit на C++](https://reader033.vdocuments.mx/reader033/viewer/2022051111/554e7720b4c905f66a8b4e52/html5/thumbnails/7.jpg)
![Page 8: Александр Панин, Как мы делали кроссплатформенную библиотеку SpeechKit на C++](https://reader033.vdocuments.mx/reader033/viewer/2022051111/554e7720b4c905f66a8b4e52/html5/thumbnails/8.jpg)
Распознавание речи в Навигаторе
«Поехали домой»
«Улица Льва Толстого 16»
«Вижу ДТП в правом ряду»
![Page 9: Александр Панин, Как мы делали кроссплатформенную библиотеку SpeechKit на C++](https://reader033.vdocuments.mx/reader033/viewer/2022051111/554e7720b4c905f66a8b4e52/html5/thumbnails/9.jpg)
![Page 10: Александр Панин, Как мы делали кроссплатформенную библиотеку SpeechKit на C++](https://reader033.vdocuments.mx/reader033/viewer/2022051111/554e7720b4c905f66a8b4e52/html5/thumbnails/10.jpg)
Yandex SpeechKit
![Page 11: Александр Панин, Как мы делали кроссплатформенную библиотеку SpeechKit на C++](https://reader033.vdocuments.mx/reader033/viewer/2022051111/554e7720b4c905f66a8b4e52/html5/thumbnails/11.jpg)
Ограничения первой версии
Платформенно-зависимая часть (PAL) не рассчитана на
использование в библиотеке
Конфликты версий библиотек
Большой объем кода
![Page 12: Александр Панин, Как мы делали кроссплатформенную библиотеку SpeechKit на C++](https://reader033.vdocuments.mx/reader033/viewer/2022051111/554e7720b4c905f66a8b4e52/html5/thumbnails/12.jpg)
Yandex SpeechKit 2.0
![Page 13: Александр Панин, Как мы делали кроссплатформенную библиотеку SpeechKit на C++](https://reader033.vdocuments.mx/reader033/viewer/2022051111/554e7720b4c905f66a8b4e52/html5/thumbnails/13.jpg)
Цели
Кроссплатформенность и минимум дублирования кода
Одинаково стабильное поведение на всех платформах
Производительность
Удобная компактная и легко интегрируемая библиотека
![Page 14: Александр Панин, Как мы делали кроссплатформенную библиотеку SpeechKit на C++](https://reader033.vdocuments.mx/reader033/viewer/2022051111/554e7720b4c905f66a8b4e52/html5/thumbnails/14.jpg)
Кроссплатформенность
![Page 15: Александр Панин, Как мы делали кроссплатформенную библиотеку SpeechKit на C++](https://reader033.vdocuments.mx/reader033/viewer/2022051111/554e7720b4c905f66a8b4e52/html5/thumbnails/15.jpg)
Кроссплатформенность
С Assembler
![Page 16: Александр Панин, Как мы делали кроссплатформенную библиотеку SpeechKit на C++](https://reader033.vdocuments.mx/reader033/viewer/2022051111/554e7720b4c905f66a8b4e52/html5/thumbnails/16.jpg)
Система сборки
1 gyp
![Page 17: Александр Панин, Как мы делали кроссплатформенную библиотеку SpeechKit на C++](https://reader033.vdocuments.mx/reader033/viewer/2022051111/554e7720b4c905f66a8b4e52/html5/thumbnails/17.jpg)
generate
libspeechkit.gyp
speechkit.gyp
lips.gyp
gyp
build.хml, android.mk
.xcodeproj
.sln, .csproj
![Page 18: Александр Панин, Как мы делали кроссплатформенную библиотеку SpeechKit на C++](https://reader033.vdocuments.mx/reader033/viewer/2022051111/554e7720b4c905f66a8b4e52/html5/thumbnails/18.jpg)
build
ant, ndk-build
xcode build, libtool
ms build
binaries
.a, .so, .dll
![Page 19: Александр Панин, Как мы делали кроссплатформенную библиотеку SpeechKit на C++](https://reader033.vdocuments.mx/reader033/viewer/2022051111/554e7720b4c905f66a8b4e52/html5/thumbnails/19.jpg)
deploy
bash, gradle
bash, lipo, pod
nuget
library project, .aar
framework, cocoapod
nuget package
![Page 20: Александр Панин, Как мы делали кроссплатформенную библиотеку SpeechKit на C++](https://reader033.vdocuments.mx/reader033/viewer/2022051111/554e7720b4c905f66a8b4e52/html5/thumbnails/20.jpg)
doc
doxygen
html
![Page 21: Александр Панин, Как мы делали кроссплатформенную библиотеку SpeechKit на C++](https://reader033.vdocuments.mx/reader033/viewer/2022051111/554e7720b4c905f66a8b4e52/html5/thumbnails/21.jpg)
2 версии SpeechKit
Внешняя Внутренняя
![Page 22: Александр Панин, Как мы делали кроссплатформенную библиотеку SpeechKit на C++](https://reader033.vdocuments.mx/reader033/viewer/2022051111/554e7720b4c905f66a8b4e52/html5/thumbnails/22.jpg)
Особенности
![Page 23: Александр Панин, Как мы делали кроссплатформенную библиотеку SpeechKit на C++](https://reader033.vdocuments.mx/reader033/viewer/2022051111/554e7720b4c905f66a8b4e52/html5/thumbnails/23.jpg)
Platform Abstraction Layer
Android
iOS
WP8
Java
Objective C
C#
DNI
Objective C++
C++/CLI
C++
![Page 24: Александр Панин, Как мы делали кроссплатформенную библиотеку SpeechKit на C++](https://reader033.vdocuments.mx/reader033/viewer/2022051111/554e7720b4c905f66a8b4e52/html5/thumbnails/24.jpg)
JNI
1 Минимум JNI
JNI на Java
![Page 25: Александр Панин, Как мы делали кроссплатформенную библиотеку SpeechKit на C++](https://reader033.vdocuments.mx/reader033/viewer/2022051111/554e7720b4c905f66a8b4e52/html5/thumbnails/25.jpg)
Конфликты имен в статических
библиотеках в iOS
Коверкание имен (mangling)
![Page 26: Александр Панин, Как мы делали кроссплатформенную библиотеку SpeechKit на C++](https://reader033.vdocuments.mx/reader033/viewer/2022051111/554e7720b4c905f66a8b4e52/html5/thumbnails/26.jpg)
Mangling
![Page 27: Александр Панин, Как мы делали кроссплатформенную библиотеку SpeechKit на C++](https://reader033.vdocuments.mx/reader033/viewer/2022051111/554e7720b4c905f66a8b4e52/html5/thumbnails/27.jpg)
Создание Framework в iOS
Правильные проектные файлы
Сборка библиотеки и зависимостей
Создание универсальной библиотеки
Сборка ресурсов
Копирование ресурсов, библиотеки, заголовочных
файлов в каталог framework
![Page 28: Александр Панин, Как мы делали кроссплатформенную библиотеку SpeechKit на C++](https://reader033.vdocuments.mx/reader033/viewer/2022051111/554e7720b4c905f66a8b4e52/html5/thumbnails/28.jpg)
WP8
1 Плохая поддержка С (С89)
Windows Phone Runtime Component
![Page 29: Александр Панин, Как мы делали кроссплатформенную библиотеку SpeechKit на C++](https://reader033.vdocuments.mx/reader033/viewer/2022051111/554e7720b4c905f66a8b4e52/html5/thumbnails/29.jpg)
Управление памятью
1 Очень конкурентная среда
Время жизни объектов
Решение: умные указатели
![Page 30: Александр Панин, Как мы делали кроссплатформенную библиотеку SpeechKit на C++](https://reader033.vdocuments.mx/reader033/viewer/2022051111/554e7720b4c905f66a8b4e52/html5/thumbnails/30.jpg)
Резюме
![Page 31: Александр Панин, Как мы делали кроссплатформенную библиотеку SpeechKit на C++](https://reader033.vdocuments.mx/reader033/viewer/2022051111/554e7720b4c905f66a8b4e52/html5/thumbnails/31.jpg)
Android
iOS
WP8
![Page 32: Александр Панин, Как мы делали кроссплатформенную библиотеку SpeechKit на C++](https://reader033.vdocuments.mx/reader033/viewer/2022051111/554e7720b4c905f66a8b4e52/html5/thumbnails/32.jpg)
Принципы
Ядро на C++
Тонкий слой между ядром и PAL
gyp
![Page 33: Александр Панин, Как мы делали кроссплатформенную библиотеку SpeechKit на C++](https://reader033.vdocuments.mx/reader033/viewer/2022051111/554e7720b4c905f66a8b4e52/html5/thumbnails/33.jpg)
Используемые решения
gyp
ant, ndk-build, xcode build, libtool, ms build
bash, gradle, lipo, pod, nuget
doxygen
![Page 34: Александр Панин, Как мы делали кроссплатформенную библиотеку SpeechKit на C++](https://reader033.vdocuments.mx/reader033/viewer/2022051111/554e7720b4c905f66a8b4e52/html5/thumbnails/34.jpg)
Yandex SpeechKit
![Page 35: Александр Панин, Как мы делали кроссплатформенную библиотеку SpeechKit на C++](https://reader033.vdocuments.mx/reader033/viewer/2022051111/554e7720b4c905f66a8b4e52/html5/thumbnails/35.jpg)
Качество распознавания общих
поисковых запросов на русском языке
84%
![Page 36: Александр Панин, Как мы делали кроссплатформенную библиотеку SpeechKit на C++](https://reader033.vdocuments.mx/reader033/viewer/2022051111/554e7720b4c905f66a8b4e52/html5/thumbnails/36.jpg)
Качество распознавания гео запросов
на русском языке
94%
![Page 37: Александр Панин, Как мы делали кроссплатформенную библиотеку SpeechKit на C++](https://reader033.vdocuments.mx/reader033/viewer/2022051111/554e7720b4c905f66a8b4e52/html5/thumbnails/37.jpg)
Среднее время ответа
секунда
![Page 38: Александр Панин, Как мы делали кроссплатформенную библиотеку SpeechKit на C++](https://reader033.vdocuments.mx/reader033/viewer/2022051111/554e7720b4c905f66a8b4e52/html5/thumbnails/38.jpg)
Стандартный UI
![Page 39: Александр Панин, Как мы делали кроссплатформенную библиотеку SpeechKit на C++](https://reader033.vdocuments.mx/reader033/viewer/2022051111/554e7720b4c905f66a8b4e52/html5/thumbnails/39.jpg)
Как интегрировать SpeechKit с UI для Android
![Page 40: Александр Панин, Как мы делали кроссплатформенную библиотеку SpeechKit на C++](https://reader033.vdocuments.mx/reader033/viewer/2022051111/554e7720b4c905f66a8b4e52/html5/thumbnails/40.jpg)
строк кода
![Page 41: Александр Панин, Как мы делали кроссплатформенную библиотеку SpeechKit на C++](https://reader033.vdocuments.mx/reader033/viewer/2022051111/554e7720b4c905f66a8b4e52/html5/thumbnails/41.jpg)
Какие задачи можно решать с помощью
SpeechKit:
Создание голосового интерфейса для управление
сервисом/приложением (голосовые команды)
Голосовой поиск по контенту приложения
Диктовка коротких текстов (заметки, смс, комментарии и пр.), т.е.
перевод речи в текст
![Page 42: Александр Панин, Как мы делали кроссплатформенную библиотеку SpeechKit на C++](https://reader033.vdocuments.mx/reader033/viewer/2022051111/554e7720b4c905f66a8b4e52/html5/thumbnails/42.jpg)
В каких приложениях/сервисах можно
использовать SpeechKit
Геоинформационные
Поиск по контенту
Команды и меню
![Page 43: Александр Панин, Как мы делали кроссплатформенную библиотеку SpeechKit на C++](https://reader033.vdocuments.mx/reader033/viewer/2022051111/554e7720b4c905f66a8b4e52/html5/thumbnails/43.jpg)
api.yandex.ru/speechkit/
43
![Page 44: Александр Панин, Как мы делали кроссплатформенную библиотеку SpeechKit на C++](https://reader033.vdocuments.mx/reader033/viewer/2022051111/554e7720b4c905f66a8b4e52/html5/thumbnails/44.jpg)
clubs.ya.ru/speechkit/
44
![Page 45: Александр Панин, Как мы делали кроссплатформенную библиотеку SpeechKit на C++](https://reader033.vdocuments.mx/reader033/viewer/2022051111/554e7720b4c905f66a8b4e52/html5/thumbnails/45.jpg)
Спасибо за внимание!