美文网首页
iOS AVSpeechSynthesizer语音合成

iOS AVSpeechSynthesizer语音合成

作者: 倪大头 | 来源:发表于2018-05-10 15:02 被阅读3次

    需要用到AVFoundation框架,AVSpeechUtterance类可以设置语音的语速,语种,音量,延迟等

    UITextField *myTextField = [[UITextField alloc]initWithFrame:CGRectMake(0, 0, kScaleX*300, kScaleY*40)];
    myTextField.center = CGPointMake(UI_SCREEN_WIDTH/2, kScaleY*300 + myTextField.frame.size.height/2);
    myTextField.placeholder = @" 输入一段文字";
    myTextField.textColor = [UIColor blackColor];
    myTextField.font = [UIFont systemFontOfSize:15];
    myTextField.layer.borderColor = [UIColor lightGrayColor].CGColor;
    myTextField.layer.borderWidth = 1;
    [self.view addSubview:myTextField];
        
    UIButton *commitBtn = [[UIButton alloc]initWithFrame:CGRectMake(0, 0, kScaleX*100, kScaleY*40)];
    commitBtn.center = CGPointMake(myTextField.center.x, CGRectGetMaxY(myTextField.frame) + kScaleY*20 + commitBtn.frame.size.height/2);
    [commitBtn setTitle:@"语音" forState:UIControlStateNormal];
    [commitBtn setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
    commitBtn.titleLabel.font = [UIFont systemFontOfSize:13];
    commitBtn.backgroundColor = [UIColor orangeColor];
    [self.view addSubview:commitBtn];
    [[commitBtn rac_signalForControlEvents:UIControlEventTouchUpInside] subscribeNext:^(id x) {
        NSLog(@"%@",myTextField.text);
        self.synthesizer = [[AVSpeechSynthesizer alloc]init];
        self.synthesizer.delegate = self;
        AVSpeechUtterance *utterange = [[AVSpeechUtterance alloc]initWithString:myTextField.text];
        utterange.voice = [AVSpeechSynthesisVoice voiceWithLanguage:@"zh-CN"];//语言
        utterange.rate = 0.4f;//语速
        //utterange.volume = 1.0f;//音量
        //utterange.pitchMultiplier = 0.7f;//声调 [0.5 - 2] Default = 1
        //utterange.postUtteranceDelay = 0.1;//每句读完之后的延迟
        [self.synthesizer speakUtterance:utterange];
    }];
    

    遵循AVSpeechSynthesizerDelegate可以监听语音合成状态,如开始播放/播放结束等

    - (void)speechSynthesizer:(AVSpeechSynthesizer *)synthesizer didStartSpeechUtterance:(AVSpeechUtterance *)utterance {
        NSLog(@"开始播放");
    }
    
    WechatIMG9.png

    相关文章

      网友评论

          本文标题:iOS AVSpeechSynthesizer语音合成

          本文链接:https://www.haomeiwen.com/subject/zpgzrftx.html