Code Monkey home page Code Monkey logo

aimybox-ios-sdk's People

Contributors

alexs32 avatar dimzfresh avatar erusaev avatar erusaevap avatar morfeusys avatar nm-jai avatar ozyrus avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

aimybox-ios-sdk's Issues

Wakeword

can I create a custom wakeword for the app?

Добавить событие для отслеживания метрик Yandex SpeechKit

Для отслеживания метрик работы голосового помощника необходимо получать информацию о времени обработки запроса TextToSpeech в Yandex SpeechKit Яндекс.Облака. На текущий момент при использовании SDK AimyBox для IOS нет возможности отслеживать данную метрику, есть возможность только получить время запроса с учетом времени, которое еще требуется на произнесение текста.
Необходимо добавить возможность передачи времени ответа или факт получения успешного ответа от Yandex SpeechKit

В демо-аппе в беспроводных наушниках воспроизводится сжатый звук голосового помощника

Посмотрел демоапп с конфигами альфа-мобайла. Я смотрел на iPhone 11 iOS 15.1. Проверял на AirPods и сторонних беспроводных наушниках (MI True Wireless EBs и JBL FREE).

  1. Зайти в приложение, уже подключив наушники.
  2. Пишем текст голосовому помощнику или выбираем быструю команду.
  3. Слушаем ответ голосового помощника.
    Фактический результат: Я слышу сжатый звук голосового помощника
    Ожидаемый результат: Звук не должен быть сжатым.

Проблемы с беспроводными наушниками в демо-аппе(c конфигами альфа-мобайла)

Посмотрел демоапп с конфигами альфа-мобайла. Обнаружил баги. Я смотрел на iPhone 11 iOS 15.1. Проверял на AirPods и сторонних беспроводных наушниках (MI True Wireless EBs и JBL FREE).

Баг №1 Приложение крашится. Воспроизводится для всех наушников.
Я распишу 4 кейса , которые могут привести к крашу. Ожидаемый результат для этих кейсов : Приложение не должно крашится.

Кейс 1

  1. Зайти в приложение с подключенными наушниками.
  2. Включаем микрофон , нажав на соответствующую иконку
  3. Выключаем микрофон, нажав на эту же иконку
  4. Подключаем беспроводные наушники.
  5. Наушники подключены. Снова включаем микрофон.

Фактический результат: Произойдёт краш приложения

Кейс 2

  1. Зайти в приложение с подключенными наушников
  2. Включаем микрофон, нажав на соответствующую иконку
  3. Выключаем микрофон, нажав на эту же иконку
  4. Отключаем беспроводные наушники.
  5. Наушники отключены. Снова включаем микрофон.

Фактический результат: Произойдёт краш приложения

Кейс 3

  1. Зайти в приложение без подключенных наушников
  2. Включаем микрофон , нажав на соответствующую иконку
  3. Выключаем микрофон, нажав на эту же иконку
  4. Подключаем беспроводные наушники.
  5. Наушники подключены. Пишем текст голосовому помощнику или выбираем быструю команду.
  6. Голосовой помощник ответил голосом .

Фактический результат: После того как он закончит речь, то приложение крашится.

Кейс 4

  1. Зайти в приложение без подключенных наушников
  2. Включаем микрофон , нажав на соответствующую иконку
  3. Выключаем микрофон, нажав на эту же иконку
  4. Отключаем беспроводные наушники.
  5. Наушники отключены. Пишем текст голосовому помощнику или выбираем быструю команду.
  6. Голосовой помощник ответил голосом .

Фактический результат: После того как он закончит речь, то приложение крашится.

Баг №2. В сторонних наушниках (не в AirPods) слышу гудки при включении/выключения микрофона.

Кейс 1

  1. Зайти в приложение с подключенными наушниками.
  2. Пишем текст голосовому помощнику или выбираем быструю команду.
  3. Слушаем ответ голосового помощника

Кейс 2

  1. Зайти в приложение с подключенными наушниками.
  2. Включаем микрофон, нажав на соответствующую иконку

Фактический результат: Перед тем как голосовой помощник начнет говорить и после того как закончит, я слышу гудки в наушниках из-за того, что в них включается и включается микрофон. При включении микрофона, нажав на соответствующую иконку, тоже слышу гудки. На эйрподсах такие звуки не воспроизводятся. Только в сторонних наушниках .
Ожидаемый результат распишу ниже, после 3 бага.

Баг №3. При подключенных наушниках не работает распознавание голоса через микрофон

  1. Зайти в приложение, уже подключив наушники
  2. Включаем микрофон , нажав на соответствующую иконку
  3. Что-нибудь говорим в микрофон
    Фактический результат: Голос не распознается в микрофон. Такая проблема для всех беспроводных наушников.

Ожидаемый результат для багов №2 и №3
Для наушников AirPods: Микрофон должен работать на наушниках.
Для сторонних наушников: Так как в них слышим гудки при включении/отключении микрофона наушников(напомню что в эйрподсах нету таких звуков), то микрофон в наушниках не должен работать и распознавание голоса должно происходить через микрофон телефона.
P.S. Я решил посмотреть как работает Сири через наушники. Если с ней общаемся через эйрподсы, то микрофон будет работать на наушниках . А если с ней пообщаться через сторонние наушники, то микрофон будет работать в телефоне.

Баг №4 Сжатый звук в беспроводных наушниках

  1. Зайти в приложение, уже подключив наушники.
  2. Пишем текст голосовому помощнику или выбираем быструю команду.
  3. Слушаем ответ голосового помощника.
    Фактический результат: Я слышу сжатый звук голосового помощника
    Ожидаемый результат: Звук не должен быть сжатым.

Поддержать io.grpc grpc-protobuf-lite 1.35.0

В своем проекте обновили firebase, зависимость com.google.firebase:firebase-perf-ktx тянет com.google.protobuf:protobuf-javalite:3.14.0. Эта версия конфликтует с com.google.protobuf:protobuf-lite:3.0.1, которую подтягивает библиотека com.justai.aimybox:yandex-speechkit.

От использования новой версии firebase отказаться не можем. Чтобы разрешить конфликт зависимостей необходимо поддержать в com.justai.aimybox:yandex-speechkit обновление io.grpc » grpc-protobuf-lite до версии 1.35.0

При подключении этой версии происходит краш:

2021-02-20 10:25:05.750 10628-10839/ru.alfabank.mobile.android.feature W/System.err: java.lang.ExceptionInInitializerError
2021-02-20 10:25:05.750 10628-10839/ru.alfabank.mobile.android.feature W/System.err:     at yandex.cloud.ai.stt.v2.SttServiceOuterClass$StreamingRecognitionRequest.getDefaultInstance(SttServiceOuterClass.java:467)
2021-02-20 10:25:05.751 10628-10839/ru.alfabank.mobile.android.feature W/System.err:     at yandex.cloud.ai.stt.v2.SttServiceGrpc.getStreamingRecognizeMethod(SttServiceGrpc.java:50)
2021-02-20 10:25:05.751 10628-10839/ru.alfabank.mobile.android.feature W/System.err:     at yandex.cloud.ai.stt.v2.SttServiceGrpc$SttServiceStub.streamingRecognize(SttServiceGrpc.java:130)
2021-02-20 10:25:05.751 10628-10839/ru.alfabank.mobile.android.feature W/System.err:     at com.justai.aimybox.speechkit.yandex.cloud.YandexRecognitionApi.openStream$yandex_speechkit_release(YandexRecognitionApi.kt:53)
2021-02-20 10:25:05.752 10628-10839/ru.alfabank.mobile.android.feature W/System.err:     at com.justai.aimybox.speechkit.yandex.cloud.YandexRecognitionApi$openStream$1.invokeSuspend(Unknown Source:12)
2021-02-20 10:25:05.752 10628-10839/ru.alfabank.mobile.android.feature W/System.err:     at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
2021-02-20 10:25:05.752 10628-10839/ru.alfabank.mobile.android.feature W/System.err:     at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:56)
2021-02-20 10:25:05.752 10628-10839/ru.alfabank.mobile.android.feature W/System.err:     at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:571)
2021-02-20 10:25:05.753 10628-10839/ru.alfabank.mobile.android.feature W/System.err:     at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:738)
2021-02-20 10:25:05.753 10628-10839/ru.alfabank.mobile.android.feature W/System.err:     at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:678)
2021-02-20 10:25:05.754 10628-10839/ru.alfabank.mobile.android.feature W/System.err:     at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:665)
2021-02-20 10:25:05.755 10628-10839/ru.alfabank.mobile.android.feature W/System.err: Caused by: java.lang.RuntimeException: Unable to get message info for yandex.cloud.ai.stt.v2.SttServiceOuterClass$StreamingRecognitionRequest
2021-02-20 10:25:05.755 10628-10839/ru.alfabank.mobile.android.feature W/System.err:     at com.google.protobuf.GeneratedMessageInfoFactory.messageInfoFor(GeneratedMessageInfoFactory.java:62)
2021-02-20 10:25:05.755 10628-10839/ru.alfabank.mobile.android.feature W/System.err:     at com.google.protobuf.ManifestSchemaFactory$CompositeMessageInfoFactory.messageInfoFor(ManifestSchemaFactory.java:143)
2021-02-20 10:25:05.755 10628-10839/ru.alfabank.mobile.android.feature W/System.err:     at com.google.protobuf.ManifestSchemaFactory.createSchema(ManifestSchemaFactory.java:55)
2021-02-20 10:25:05.756 10628-10839/ru.alfabank.mobile.android.feature W/System.err:     at com.google.protobuf.Protobuf.schemaFor(Protobuf.java:90)
2021-02-20 10:25:05.756 10628-10839/ru.alfabank.mobile.android.feature W/System.err:     at com.google.protobuf.Protobuf.schemaFor(Protobuf.java:104)
2021-02-20 10:25:05.756 10628-10839/ru.alfabank.mobile.android.feature W/System.err:     at com.google.protobuf.GeneratedMessageLite.makeImmutable(GeneratedMessageLite.java:175)
2021-02-20 10:25:05.756 10628-10839/ru.alfabank.mobile.android.feature W/System.err:     at yandex.cloud.ai.stt.v2.SttServiceOuterClass$StreamingRecognitionRequest.<clinit>(SttServiceOuterClass.java:463)
2021-02-20 10:25:05.756 10628-10839/ru.alfabank.mobile.android.feature W/System.err: 	... 11 more
2021-02-20 10:25:05.757 10628-10839/ru.alfabank.mobile.android.feature W/System.err: Caused by: java.lang.UnsupportedOperationException
2021-02-20 10:25:05.757 10628-10839/ru.alfabank.mobile.android.feature W/System.err:     at yandex.cloud.ai.stt.v2.SttServiceOuterClass$StreamingRecognitionRequest.dynamicMethod(SttServiceOuterClass.java:455)
2021-02-20 10:25:05.758 10628-10839/ru.alfabank.mobile.android.feature W/System.err:     at com.google.protobuf.GeneratedMessageLite.dynamicMethod(GeneratedMessageLite.java:256)
2021-02-20 10:25:05.758 10628-10839/ru.alfabank.mobile.android.feature W/System.err:     at com.google.protobuf.GeneratedMessageLite.buildMessageInfo(GeneratedMessageLite.java:284)
2021-02-20 10:25:05.758 10628-10839/ru.alfabank.mobile.android.feature W/System.err:     at com.google.protobuf.GeneratedMessageInfoFactory.messageInfoFor(GeneratedMessageInfoFactory.java:60)
2021-02-20 10:25:05.758 10628-10839/ru.alfabank.mobile.android.feature W/System.err: 	... 17 more```


the first word is cut off, if not in Russian

Такая проблема - при переводе в tts обрезается первое английское слово, остальные слова произносятся нормально.

tesla.mp4

https://tts.api.cloud.yandex.net/speech/v1/tts:synthesize?folderId=b1gq9gur08br1ugei06g&text=запустит на Гавайях гигантскую виртуальную электростанцию.&lang=ru-RU&voice=kuznetsov&format=lpcm&sampleRateHertz=48000&speed=1.0&emotion=neutral

Alf говорит вслух, когда уровень громкости 0

iphone 11, ios14.1

Перевести девайс в беззвучный режим, уровень громкости снизить до 0.
Зайти в голосового помощника

ОР: не слышно озвучки фраз помощника
ФР: помощник говорит вслух, снова можно уменьшить громкость

RPReplay_Final1635164186.MP4

В демо-аппе при подключенных наушниках не работает распознавание голоса через микрофон и слышу гудки при включении/выключения микрофона на наушниках.

Посмотрел демоапп с конфигами альфа-мобайла. Я смотрел на iPhone 11 iOS 15.1. Проверял на AirPods и сторонних беспроводных наушниках (MI True Wireless EBs и JBL FREE).

Баг №1. В сторонних наушниках (не в AirPods) слышу гудки при включении/выключения микрофона.

Кейс 1

  1. Зайти в приложение с подключенными наушниками.
  2. Пишем текст голосовому помощнику или выбираем быструю команду.
  3. Слушаем ответ голосового помощника

Кейс 2

  1. Зайти в приложение с подключенными наушниками.
  2. Включаем микрофон, нажав на соответствующую иконку

Фактический результат: Перед тем как голосовой помощник начнет говорить и после того как закончит, я слышу гудки в наушниках из-за того, что в них включается и включается микрофон. При включении микрофона, нажав на соответствующую иконку, тоже слышу гудки. На эйрподсах такие звуки не воспроизводятся. Только в сторонних наушниках .
Ожидаемый результат распишу ниже, после 2 бага.

Баг №2. При подключенных наушниках не работает распознавание голоса через микрофон

  1. Зайти в приложение, уже подключив наушники
  2. Включаем микрофон , нажав на соответствующую иконку
  3. Что-нибудь говорим в микрофон
    Фактический результат: Голос не распознается в микрофон. Такая проблема для всех беспроводных наушников.

Ожидаемый результат для багов №1 и №2
Для наушников AirPods: Микрофон должен работать на наушниках.
Для сторонних наушников: Так как в них слышим гудки при включении/отключении микрофона(напомню что в эйрподсах нету таких звуков), то микрофон в наушниках не должен работать и распознавание голоса должно происходить через микрофон телефона.
P.S. Я решил посмотреть как работает Сири через наушники. Если с ней общаемся через эйрподсы, то микрофон будет работать на наушниках . А если с ней пообщаться через сторонние наушники, то микрофон будет работать в телефоне.

Плохая чувствительность микрофона.

В некоторых ситуациях микрофон плохо улавливает слова, обычно в начале распознавания. Нужно попробовать отловить такие случаи и улучшить распознавание. Возможно это из-за #27 или #30

Демо-апп крашится при работе с беспроводными наушниками.

Посмотрел демоапп с конфигами альфа-мобайла. Я смотрел на iPhone 11 iOS 15.1. Проверял на AirPods и сторонних беспроводных наушниках (MI True Wireless EBs и JBL FREE).

Я распишу 4 кейса , которые могут привести к крашу. Ожидаемый результат для этих кейсов : Приложение не должно крашится.

Кейс 1

  1. Зайти в приложение с подключенными наушниками.
  2. Включаем микрофон , нажав на соответствующую иконку
  3. Выключаем микрофон, нажав на эту же иконку
  4. Подключаем беспроводные наушники.
  5. Наушники подключены. Снова включаем микрофон.

Фактический результат: Произойдёт краш приложения

Кейс 2

  1. Зайти в приложение с подключенными наушниками
  2. Включаем микрофон, нажав на соответствующую иконку
  3. Выключаем микрофон, нажав на эту же иконку
  4. Отключаем беспроводные наушники.
  5. Наушники отключены. Снова включаем микрофон.

Фактический результат: Произойдёт краш приложения

Кейс 3

  1. Зайти в приложение без подключенных наушников
  2. Включаем микрофон , нажав на соответствующую иконку
  3. Выключаем микрофон, нажав на эту же иконку
  4. Подключаем беспроводные наушники.
  5. Наушники подключены. Пишем текст голосовому помощнику или выбираем быструю команду.
  6. Голосовой помощник ответил голосом .

Фактический результат: После того как он закончит речь, то приложение крашится.

Кейс 4

  1. Зайти в приложение с подключенными наушниками
  2. Включаем микрофон , нажав на соответствующую иконку
  3. Выключаем микрофон, нажав на эту же иконку
  4. Отключаем беспроводные наушники.
  5. Наушники отключены. Пишем текст голосовому помощнику или выбираем быструю команду.
  6. Голосовой помощник ответил голосом .

Фактический результат: После того как он закончит речь, то приложение крашится.

Не останавливается воспроизведение музыки при входе в голосового помощника

Если при входе в голосового помощника включена музыка (в наушниках или динамиках) то музыка не прерывается

Шаги воспроизведения:

  1. Включить музыку на устройстве
  2. Зайти в голосового помощника (Альфа мобайл)

ОР: музыка прерывается, слышно только ГП
ФР: Музыка становится громче, слышно музыку и ГП

Версия SDK 0.0.13
iOS 14.6, ios15, ios 13
Iphone 12 mini, iphone 11, iphone SE(2nd)

Permissions check

Check dictation and microphone permissions on initialisation to prevent the application crash.

Проблемы со speechStarted

Проверить, вызывается ли speechStarted в YandexTestToSpeech; если не вызывается, добавить вызов + прокидывать AimyboxSpeech в speechDataRecieved, чтобы понимать, какой спич закончил загружаться.

Альф тихо говорит на некоторых устройствах и на него не действуют кнопки громкости

У некоторых пользователей на проде Альф (голосовой помощник Альфа банка) тихо говорит и громкость невозможно повысить кнопками

замечено на:
iPhone 11, ios 15.0.1
iPhone 11 PRO, ios 15
iPhone 7, ios 14.6
iPhone 7 Plus, 14.6

версия сдк: 0.0.13

Проблема подключения беспроводных наушников, если находимся на экране голосового помощника Alf.

Я проверял в наушинках AirPods и Mi True Wireless EBs
Шаги

  1. Авторизоваться в Альфа-мобайл
  2. Зайти в голосового помощника
  3. Подключить беспроводные наушники

Фактический результат:
Блютуз соединение с наушниками установилось, но звук воспроизводится с динамика телефона. Звук появится в наушниках, если выйти из голосового помощника и снова зайти.

Ожидаемый результат
Блютуз соединение с наушниками установилось, звук передается в наушники .

Проверить блокировку main thread запросом на открытие потока

при переходе в стейт listening, каждый раз идет запрос на открытие потока (ConnectivityObserverState: connecting) и похоже, что он блокирует main thread. Плюс имеем задержку на время соединения. Нельзя ли открывать соединение один раз и закрывать его на деинициализации?
image

Update UI

Update UI in demo to match Aimybox Android Assistant demo. (See GIF here)

YandexSpeechToText.stop не успевает закрыть стрим

Если вызвать yandexSpeechToText.stopRecognition до того, как пришел final result, и сразу же yandexSpeechToText.startRecognition, то при открытии новой сессии получаем остаточные результаты от прошлой.

Шаги:

  1. yandexSpeechToText.startRecognition (либо aimybox.startRecognition)
  2. говорим что-нибудь (напр. "привет")
  3. получаем partial result func stt(_ speechToText: SpeechToText, recognitionPartial result: String)
  4. дергаем yandexSpeechToText.stopRecognition (либо aimybox.stopRecognition, либо aimybox.sendRequest(query:))
  5. дергаем yandexSpeechToText.startRecognition и ничего не говорим

Ожидаемое поведение:
6. Если ничего не говорим, не приходит респонс от YandexSpeechToText

Фактическое поведение:
6. Если предыдущий стрим не успел закрыться, то получаем partialResult("привет") и finalResult("привет")

Неправильное произнесение фразы с ударением

Проблема:
Когда на фронт приходит фраза, в которой мы хотим услышать ударение на нужном слове (передаем символ "+"), сдк почему-то обрезает этот символ и фраза произносится некорректно

Вот пример из логов iOS:
https://tts.api.cloud.yandex.net/speech/v1/tts:synthesize?folderId=b1gq9gur08br1ugei06g&text=Заплат ите 57 407,24 ₽ до 11 марта 2021&lang=ru-RU&speed=1.0&voice=kuznetsov&emotion=neutral&format=lpcm&sampleRateHertz=48000
хотя приходит фраза: "tts":"Заплат+ите 57 407,24 ₽ до 11 марта 2021"

В том же самом кейсе, на андроиде проблема не воспроизводится, и все произносится нормально. Ниже прикрепляю два видео с проблемой на айосе и с нормальным произнесением на андроиде

android.mp4
ios.mp4

Передавать параметр - x-data-logging-enabled в Yandex.Speechkit в Aimybox

При запросе к Yandex SpeechKit Яндекс.Облака для диагностики ошибок необходимо передавать разрешение сохранять данные, переданные пользователем в запросе. В соответствии с документацией Яндекса https://cloud.yandex.ru/docs/speechkit/concepts/support-headers данное разрешение передается в параметре - x-data-logging-enabled.

На текущий момент при использовании SDK AimyBox для iOS нет возможности передать данный параметр в запросе к Yandex SpeechKit.

Необходимо в объекты YandexTextToSpeech и YandexSpeechToText добавить возможность передачи параметра x-data-logging-enabled.

Internet connection check

Generate an appropriate exception if text-to-speech or speech-to-text component requires an internet connection.

[iOS 12] Нет распознавания голоса после ответа ГП (Голосовой помощник Альф)

Предусловия:
Авторизоваться в мобильное приложение Алфа-Мобайл

Шаги воспроизведения:

  1. Зайти в ГП
  2. Сказать любую фразу, прослушать ответ
  3. Сказать любую фразу
    ОР: бабл с распознанным текстом появился на экране и запрос ушел в коробку (JAICP)
    ФР: распознавания речи нет, анимация в состоянии Listen

Описание: Альф слышит команду, отвечает, но следующую команду уже не слышит
Чтобы услышал, надо тапнуть на анимацию

3.mp4

iOS 12.5 iphone 6
iOS 12.5.1 iPhone 5S

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.