gpt4 book ai didi

ios - 嗨,有没有办法让 AVSpeech 合成器在使用耳机播放音频的同时使用任一 channel 播放音频?

转载 作者:可可西里 更新时间:2023-11-01 05:40:18 27 4
gpt4 key购买 nike

我需要的是单独使用左声道或右声道播放音频。我知道 AVAudioPlayer 可以使用 pan 属性使用任一 channel 播放音频。如果 AVSpeechSynthesizer 没有办法做到这一点,是否可以使用 AVAudioPlayer 播放语音以便控制 channel ?如果我能以某种方式获取 AVSpeechUtterance 的 NSURL 并使用 AVAudioPlayer 播放它?

只有以前的类似问题:Any way to control which audio channel AVSpeechSynthesizer outputs to?我发现没有得到回答,我在试图找到解决方案时一无所获。

最佳答案

是的,您可以使用 AVSpeechSynthesizeroutputChannels 属性来执行此操作。 Apple 尚未为此发布任何文档,但它的工作方式与 AVAudioPlayerchannelAssignments 属性相同。这将返回一个人类可读的可用 channel 列表:

- (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;
}

您或用户可以选择要使用的 channel 名称。然后将 AVSpeechSynthesizer 设置为使用该 channel :

- (void)setSpeechSynthesizer:(AVSpeechSynthesizer *)speechSynthesizer toChannels:(NSArray *)channelNames {
AVAudioSession *session = [AVAudioSession sharedInstance];
AVAudioSessionRouteDescription *route = [session currentRoute];
NSArray *outputPorts = [route outputs];
NSMutableArray *channelDescriptions = [NSMutableArray array];
for (NSString *channelName in channelNames) {
for (AVAudioSessionPortDescription *outputPort in outputPorts) {
for (AVAudioSessionChannelDescription *channel in outputPort.channels) {
if ([channel.channelName isEqualToString:channelName]) {
[channelDescriptions addObject:channel];
}
}
}
}
if ([channelDescriptions count]) {
speechSynthesizer.outputChannels = channelDescriptions;
}
}

关于ios - 嗨,有没有办法让 AVSpeech 合成器在使用耳机播放音频的同时使用任一 channel 播放音频?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39420687/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com