Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Как мы делали
кроссплатформенную
библиотеку SpeechKit на C++
Александр Панин
Распознавание речи в Навигаторе
«Поехали домой»
«Улица Льва Толстого 16»
«Вижу ДТП в правом ряду»
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
Правильные проектные файлы
Сборка библиотеки и зависимостей
Создание универсальной библиотеки
Сбо...
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
Александр Панин, Как мы делали кроссплатформенную библиотеку SpeechKit на C++
Александр Панин, Как мы делали кроссплатформенную библиотеку SpeechKit на C++
Александр Панин, Как мы делали кроссплатформенную библиотеку SpeechKit на C++
Александр Панин, Как мы делали кроссплатформенную библиотеку SpeechKit на C++
Александр Панин, Как мы делали кроссплатформенную библиотеку SpeechKit на C++
Александр Панин, Как мы делали кроссплатформенную библиотеку SpeechKit на C++
Александр Панин, Как мы делали кроссплатформенную библиотеку SpeechKit на C++
Upcoming SlideShare
Loading in …5
×

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

675 views

Published on

Published in: Technology
  • Be the first to comment

  • Be the first to like this

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

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

×