我需要的是仅使用左声道或右声道播放音频。 我知道AVAudioPlayer可以使用pan属性使用任一通道播放音频。 如果AVSpeechSynthesizer无法完成此任务,是否可以使用AVAudioPlayer播放话语以便控制通道? 如果我能以某种方式获得AVSpeechUtterance的NSURL并使用AVAudioPlayer播放它?
只有先前类似的问题:Any way to control which audio channel AVSpeechSynthesizer outputs to?我发现没有回答,我试图寻找解决方案。
答案 0 :(得分:2)
是的,您可以使用outputChannels
的{{1}}属性执行此操作。 Apple尚未发布任何文档,但其工作方式与AVSpeechSynthesizer
的{{1}}属性相同。这将返回一个人类可读的可用频道列表:
channelAssignments
您或用户可以选择要使用的频道名称。然后,这会将AVAudioPlayer
设置为使用该频道:
- (NSArray *)getAudioChannelNames {
// return the name of each channel in each connected audio port
// examples: Headphones Left/Right, Speaker, DUO-CAPTURE 1/2
AVAudioSession *session = [AVAudioSession sharedInstance];
AVAudioSessionRouteDescription *route = [session currentRoute];
NSArray *outputPorts = [route outputs];
NSMutableArray *channels = [NSMutableArray array];
for (AVAudioSessionPortDescription *outputPort in outputPorts) {
for (AVAudioSessionChannelDescription *channel in outputPort.channels) {
[channels addObject:channel.channelName];
}
}
return channels;
}