文字转语音

1.导入框架 AVFoundation

注意:三个关键类

AVSpeechSynthesizer: 可以假想成一个可以说话的人
AVSpeechSynthesisVoice: 可以假想成人的声音
AVSpeechUtterance: 可以假想成要说的一段话

#import <Foundation/Foundation.h>

@interface TmfSpeakTool : NSObject

- (void)transtoVoiceWithString:(NSString *)str;
- (void)pauseAv;

@end
#import <AVFoundation/AVFoundation.h>
@interface TmfSpeakTool ()<AVSpeechSynthesizerDelegate>

@property (nonatomic, strong) AVSpeechSynthesizer *aVSpeechSynthesizer;


//@property(nonatomic)float pitchMultiplier;// [0.5 - 2] Default = 1,声调,不怕逗死你就设成2
@end
@implementation TmfSpeakTool

- (AVSpeechSynthesizer *)aVSpeechSynthesizer{
   if (!_aVSpeechSynthesizer) {
       _aVSpeechSynthesizer = [[AVSpeechSynthesizer alloc] init];
       _aVSpeechSynthesizer.delegate = self;
   }
   return _aVSpeechSynthesizer;
}

- (void)pauseAv{
   

   if (self.aVSpeechSynthesizer.paused) {
       [self.aVSpeechSynthesizer continueSpeaking];
   }else{
   [self.aVSpeechSynthesizer pauseSpeakingAtBoundary:AVSpeechBoundaryImmediate];
   }
}

- (void)transtoVoiceWithString:(NSString *)str{
   
 
   if (self.aVSpeechSynthesizer.speaking) 
       return;
   AVSpeechUtterance * aVSpeechUtterance = [[AVSpeechUtterance alloc] initWithString:str];
   
   aVSpeechUtterance.rate = AVSpeechUtteranceDefaultSpeechRate;// 设置语速,范围0-1,注意0最慢,1最快;
   
   aVSpeechUtterance.voice =[AVSpeechSynthesisVoice voiceWithLanguage:@"zh-CN"];//设置发音,这是中文普通话
   
   [self.aVSpeechSynthesizer speakUtterance:aVSpeechUtterance];//开始阅读

}
#pragma mark - =========AVSpeechSynthesizerDelegate =========
- (void)speechSynthesizer:(AVSpeechSynthesizer *)synthesizer didStartSpeechUtterance:(AVSpeechUtterance *)utterance{
   NSLog(@"开始阅读");

}
- (void)speechSynthesizer:(AVSpeechSynthesizer *)synthesizer didFinishSpeechUtterance:(AVSpeechUtterance *)utterance{
   [self.aVSpeechSynthesizer stopSpeakingAtBoundary:AVSpeechBoundaryImmediate];
   NSLog(@"阅读完毕");
}
- (void)speechSynthesizer:(AVSpeechSynthesizer *)synthesizer didPauseSpeechUtterance:(AVSpeechUtterance *)utterance{
   
   NSLog(@"阅读暂停");

}
- (void)speechSynthesizer:(AVSpeechSynthesizer *)synthesizer didContinueSpeechUtterance:(AVSpeechUtterance *)utterance{
   
   NSLog(@"阅读继续");

}
- (void)speechSynthesizer:(AVSpeechSynthesizer *)synthesizer didCancelSpeechUtterance:(AVSpeechUtterance *)utterance{
   
   
}

- (void)speechSynthesizer:(AVSpeechSynthesizer *)synthesizer willSpeakRangeOfSpeechString:(NSRange)characterRange utterance:(AVSpeechUtterance *)utterance{
   
  
}

github地址

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • iOS自带文字转语音功能,实现很简单,接下来我们就一起来学习这个简单酷炫的功能。 要实现文字转语音,我们只需要简单...
    MrFire_阅读 5,136评论 1 2
  • NSString *voicr = @"大千世界,位面交汇,万族林立,群雄荟萃,一位位来自下位面的天之至尊,在这无...
    icc_tips阅读 2,880评论 0 1
  • 前言 之前自己的项目中曾经使用过讯飞的文字转语音技术,但是通过实际测试,发现它的免费在线转语音不是很好,受网络...
    孤独雪域阅读 20,801评论 25 55
  • 因新项目需求,需要接入类似支付宝收款提示声----“支付宝到账xxxx元”,就查看了一些文章,苹果还是想的很周全,...
    Hyperion_J阅读 14,289评论 8 4
  • 分开的第一百五十三天,我还是会想起陈晓晨。 一直以来,我都不知道该怎么去面对这段已经逝去的感情,随着时间的推移,有...
    小圈的圈阅读 1,387评论 0 0

友情链接更多精彩内容