В настоящее время приложение тестируется на iPhone SE.
Предполагаемое поведение
- Если во время воспроизведения TTS пользователь начинает говорить, TTS должен немедленно стоп.
- После этого должен начаться новый процесс обработки (STT → генерация ответа).
Проблема в том, что звук TTS зацикливается обратно в микрофон.
Из-за этого, даже когда пользователь не говорит, приложение обнаруживает аудиовход, поступающий со своего собственного выхода TTS, останавливает воспроизведение TTS и неправильно запускает новый процесс.
В результате TTS часто прерывается, и приложение не может надежно различать:
- реальную речь пользователя и
- звук, генерируемый приложением (TTS).
Я попробовал включить акустическое эхоподавление iOS (AEC) с помощью AVAudioSession в режиме voiceChat:
Код: Выделить всё
try audioSession.setCategory(
.playAndRecord,
mode: .voiceChat,
options: [
.duckOthers,
.allowBluetooth,
.allowBluetoothA2DP
]
)
Звук TTS по-прежнему захватывается микрофоном и активирует распознавание голоса.
Пожалуйста, помогите мне разобраться.
Подробнее здесь: https://stackoverflow.com/questions/798 ... audiosessi
Мобильная версия