TextToSpeech에 AVSpeechSynthesizer를 사용하고 있습니다. 헤드폰에서 발언을해야 채널 (모노 2)을 떠났습니다. 다음은 출력 채널을 설정하는 방법입니다.iOS : AVSpeechSynthesizer : 헤드폰 왼쪽 채널에서 텍스트를 말하십시오.
func initalizeSpeechForRightChannel(){
let avSession = AVAudioSession.sharedInstance()
let route = avSession.currentRoute
let outputPorts = route.outputs
var channels:[AVAudioSessionChannelDescription] = []
//NSMutableArray *channels = [NSMutableArray array];
var leftAudioChannel:AVAudioSessionChannelDescription? = nil
var leftAudioPortDesc:AVAudioSessionPortDescription? = nil
for outputPort in outputPorts {
for channel in outputPort.channels! {
leftAudioPortDesc = outputPort
//print("Name: \(channel.channelName)")
if channel.channelName == "Headphones Left" {
channels.append(channel)
leftAudioChannel = channel
}else {
// leftAudioPortDesc?.channels?.removeObject(channel)
}
}
}
if channels.count > 0 {
if #available(iOS 10.0, *) {
print("Setting Left Channel")
speechSynthesizer.outputChannels = channels
print("Checking output channel : \(speechSynthesizer.outputChannels?.count)")
} else {
// Fallback on earlier versions
}
}
}
나는
1 캔트 outputchannels을 설정할 수, 그것은 항상 nil을 (그것은이 메서드를 호출 처음에 무슨 일이 일어나고, 연속 통화가 잘 작동) 코드에서이 문제
가2 outputchannels *이 아이폰 OS 10에서 지원하지만 8.0
,691 아이폰 OS 에서이를 지원해야최선의 방법을 제공해주십시오. 대신 기술적 인 channelName
을 (즉, 사용자) 검사
speechSynthesizer.outputChannels의 = 채널 이 선 후에 나는 outputChannels 그것이 0 인쇄하지만 개체 채널이 하나의 개체가 계산 인쇄하려고 – Sridhar
"캔트 outputchannels을 설정할 수, 그것은 항상 전무"--- 아주 처음으로, 그것은 아무 것도 아니다. 다시 호출하면 작동한다. – Sridhar
하나의 작은 주석 - channelName은 언어에 민감한 (지역화 된) 텍스트를 반환 할 수 있으므로 'if channel.channelName == "Headphones Left"는 그렇지 않다. 신뢰할 수있는 왼쪽 채널을 찾으려면 –