Звук TTS возвращается в микрофон даже при включенном iOS AEC (AVAudioSession.voiceChat)IOS

Программируем под IOS
Anonymous
Звук TTS возвращается в микрофон даже при включенном iOS AEC (AVAudioSession.voiceChat)

Сообщение Anonymous »

Я разрабатываю голосовое приложение для iOS (Xcode), аналогичное голосовому режиму ChatGPT.

В настоящее время приложение тестируется на iPhone SE.
Предполагаемое поведение
  • Если во время воспроизведения TTS пользователь начинает говорить, TTS должен немедленно стоп.
  • После этого должен начаться новый процесс обработки (STT → генерация ответа).
Проблема
Проблема в том, что звук TTS зацикливается обратно в микрофон.

Из-за этого, даже когда пользователь не говорит, приложение обнаруживает аудиовход, поступающий со своего собственного выхода TTS, останавливает воспроизведение TTS и неправильно запускает новый процесс.
В результате TTS часто прерывается, и приложение не может надежно различать:
  • реальную речь пользователя и
  • звук, генерируемый приложением (TTS).
Попытка решения (AEC)
Я попробовал включить акустическое эхоподавление iOS (AEC) с помощью AVAudioSession в режиме voiceChat:

Код: Выделить всё

try audioSession.setCategory(
.playAndRecord,
mode: .voiceChat,
options: [
.duckOthers,
.allowBluetooth,
.allowBluetoothA2DP
]
)
Однако это не решило проблему с обратной связью.

Звук TTS по-прежнему захватывается микрофоном и активирует распознавание голоса.
Пожалуйста, помогите мне разобраться.

Подробнее здесь: https://stackoverflow.com/questions/798 ... audiosessi

Вернуться в «IOS»