AudioRecord во время воспроизведения аудио - доступ к выходным данным воспроизведения - PullRequest
0 голосов
/ 27 октября 2018

В своем приложении я работаю с пользовательской моделью для речевых команд - у меня она работает нормально, записывая и обрабатывая входящий звук из AudioRecord, и я даю обратную связь пользователю посредством преобразования текста в речь.

Одна из проблем, с которыми я сталкиваюсь, заключается в том, что я хотел бы, чтобы это работало, даже когда воспроизводится звук - либо через мой собственный текст в речь, либо через что-то еще, играющее на заднем плане (например, музыка). Я понимаю, что это будет нетривиальной проблемой, но если бы я мог каким-то образом получить доступ к аудиовыходным данным (то, что воспроизводит телефон) и сопоставить их с входными данными моего микрофона, я думаю, что я по крайней мере могу настроить моя модель для этого + улучшить мои результаты.

Однако на основе Android - можно ли получить аудиоданные для воспроизведения из аудиомикшера? , звучит так, что это невозможно.

Два вопроса:

1) Есть ли какой-то способ, которым мне не хватает, чтобы получить доступ к ожидаемым аудиовыходам / данным о воспроизведении через Android API, или какие-либо опции, которые предоставляет Android API для решения этой проблемы (петля обратной связи между аудиовыходом и входом )

2) Помимо остановки всего другого воспроизведения или ожидания завершения другого воспроизведения - есть ли другой подход для решения этой проблемы? Я хотел бы предположить, что некоторые вызывающие приложения могут справиться с этим, если пользователь разговаривает по громкой связи, я просто не понимаю, как это сделать сам

Спасибо

1 Ответ

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

Ответы на вопросы 1 и 2: Вы хотите AcousticEchoCanceler .

Короткая лекция о том, почему «удаление звука динамика с входа микрофона» является нетривиальной задачей, требующей значительных знаний в области обработки сигналов: это сложнее, чем просто немного сдвинуть во времени звук динамика и вычесть его из микрофонный вход. Дело в том, что спектр звука резко меняется, даже когда он покидает динамик (большинство крошечных динамиков имеют очень пиковый отклик с центром около 3-4 кГц). Звук может отскочить от нескольких объектов (стен и т. Д.), Прежде чем он вернется в микрофон ( многолучевое вмешательство ). Различные частотные составляющие влияют на микрофон по-разному, невозможно предсказать пути, значительно изменяя спектр звука. И, между прочим - если что-то в комнате движется, скажем, если вы подносите руку к телефону - все меняется. Вот почему вы не хотите пытаться написать свой собственный фильтр эхоподавления. Android предоставил один для вас, так что вы можете написать классные приложения громкой связи и тому подобное.

...