Как обнаружить тишину в речи к тексту? - PullRequest
0 голосов
/ 04 октября 2018

Я разрабатываю Android Voice Assistant (с использованием Dialogflow) и могу контролировать, когда пользователь запускает запрос.

@Override
public void onListeningStarted() {
    ImageView fab_img = (ImageView)findViewById(R.id.fab_img);
    fab_img.startAnimation(performAnimation);
}

И это запускает анимацию для значка микрофона,После этого, когда они заканчивают вопрос или речь, я могу использовать это, чтобы остановить анимацию.

@Override
public void onListeningFinished() {
    ImageView fab_img = (ImageView)findViewById(R.id.fab_img);
    fab_img.clearAnimation();
}

Но если пользователь не говорит, а микрофон просто закрывается через некоторое время, я 'Я не в состоянии обнаружить это.Я пытался с этим:

@Override
public void onListeningCanceled() {

}

Но это не работает, и с результатом запроса, но не повезло.Есть идеи?Спасибо.

РЕДАКТИРОВАТЬ ------ Предлагаемое решение @sunil sunny выглядит отлично

@Override
public void onAudioLevel(float level) {

}

Сейчас я работаю над тем количеством времени, которое необходимо уровню тишиныбыть произведенным.

1 Ответ

0 голосов
/ 04 октября 2018

Я никогда не использовал этот API, но из документации я увидел метод с именем void onAudioLevel(float level); // callback for sound level visualization, который, я думаю, можно использовать для обнаружения тишины.Он сначала возвращает значение с плавающей запятой, поэтому сначала выясните, каково нормальное значение, когда пользователь говорит, а также выясните диапазон значений, когда пользователь молчит.Давайте предположим, что A - это значение, когда пользователь говорит, а B - это значение, когда пользователь не говорит.Тогда, если вы получаете B, скажем, 5 секунд, то пользователь молчит.

...