我的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];
答案 0 :(得分:0)
由于有效的音频会话AVAudioSession模式,可能会发生这种情况。
我没有遇到此行为的唯一模式是使用模式AVAudioSessionModeMeasurement。