1 配置 session
AVAudioSession *session = [AVAudioSession sharedInstance];
NSError *error;
if (![session setCategory:AVAudioSessionCategoryPlayback error:&error]) {
NSLog(@"Category Error : %@", [error localizedDescription]);
}
if ([session setActive:YES error:&error]) {
NSLog(@"Activation Error : %@", [error localizedDescription]);
}
#import "SpeechTool.h"
@interface SpeechTool ()
@property (nonatomic, strong) AVSpeechSynthesizer *synthesizer;
@property (nonatomic, strong) NSArray *voices;
@property (nonatomic, strong) NSArray *speechStrings;
@end
@implementation SpeechTool
+ (instancetype)speechTool
{
return [[self alloc] init];
}
- (id)init
{
self = [super init];
if (self) {
_synthesizer = [[AVSpeechSynthesizer alloc] init];
_voices = @[[AVSpeechSynthesisVoice voiceWithLanguage:@"en-US"], [AVSpeechSynthesisVoice voiceWithLanguage:@"en-GB"], [AVSpeechSynthesisVoice voiceWithLanguage:@"zh-cn"]];
_speechStrings = [self buildSpeechStrings];
}
return self;
}
- (NSArray *)buildSpeechStrings
{
return @[@"Hello AV Foundation. How are you", @"I am well! Thanks for asking.", @"xie xie ni"];
}
- (void)beginConversation
{
for (NSUInteger i = 0; i < self.speechStrings.count; i++) {
AVSpeechUtterance *utterance = [[AVSpeechUtterance alloc] initWithString:self.speechStrings[i]];
utterance.voice = self.voices[i % 2];
utterance.rate = 0.4f; // 播放速度
utterance.pitchMultiplier = 0.8f; // 音调
utterance.postUtteranceDelay = 0.1f; // 间隔
[self.synthesizer speakUtterance:utterance];
}
}
@end
AVSpeechSynthesizer详解
最新推荐文章于 2023-07-29 10:06:51 发布