我的 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];