Громкость воспроизведения AVSpeechSynthesizer (Text to Speech) увеличивается сама по себе, ТОЛЬКО на iPhone7
Мое приложение iOS10 позволяет распознавать текст в речь и распознавать речь. При этом он приостанавливает звук из других приложений и уведомляет другое о завершении ASR/TTS, чтобы они могли возобновить воспроизведение звука. Все работает отлично на iPhone5 и 6.
Проблема с iPhone7s: сначала громкость разговорных фраз очень низкая, а ближе к концу - громче. Зачем?
Я предоставлю часть своего кода на всякий случай, потому что это похоже на ошибку iOS.
Код аудио сеанса:
-(AVAudioSessionCategoryOptions)indigoAudioBehaviorOptions:(AVAudioSession *)s{
AVAudioSessionCategoryOptions audioIOoptions = [s categoryOptions];
audioIOoptions |= AVAudioSessionCategoryOptionDefaultToSpeaker;
audioIOoptions |= AVAudioSessionCategoryOptionAllowBluetooth;
audioIOoptions |= AVAudioSessionCategoryOptionAllowBluetoothA2DP;
return audioIOoptions;
}
-(void)notifyIOSthatOtherAppsCanResumeAudioPlayback{
NSError *err;
[myAudioSession setActive: NO
withOptions: AVAudioSessionSetActiveOptionNotifyOthersOnDeactivation
error: &err];
if(err!=nil){
NSLog(@"audioIsFreeNotificationForIOS ERROR: %@",err.description);
}
}
myAudioSession = [AVAudioSession sharedInstance];
NSError *err;
[myAudioSession setCategory:AVAudioSessionCategoryPlayAndRecord withOptions: [self indigoAudioBehaviorOptions:indigoAudioSession] error:&err];
Код текста в речь:
nativeVocalizer = [[AVSpeechSynthesizer alloc] init];
nativeVocalizer.delegate = self;
AVSpeechUtterance *utterance = [[AVSpeechUtterance alloc] initWithString:stringToSpeak];
[utterance setVoice:[AVSpeechSynthesisVoice voiceWithLanguage:lang]];
[nativeVocalizer speakUtterance:utterance];
1 ответ
Это может произойти из-за активного аудиосеанса в режиме AVAudioSession.
Единственный режим, где это поведение не происходило для меня, был при использовании режима AVAudioSessionModeMeasurement.