iOS 语音合成助手 FKTTSManager

iOS 语音合成助手 FKTTSManager_第1张图片
日常镇楼.jpeg

FKTTSManager是基于AVSpeechSynthesizer封装的语音合成助手,支持文字转语音播放,自定义调节语速的功能。

Demo源码 点击下载

功能展示

iOS 语音合成助手 FKTTSManager_第2张图片
Demo示意图.jpg

在输入框中自定义文字转语音播放,支持播放中 暂停/继续 操作,也可自定义播放的语速。

为了能够支持语音合成播放的功能,需要事先在工程中引入AVFoundation.framework,之后只需要把FKTTSManager文件夹导入至工程,在需要使用到语音合成的地方引入FKTTSManager.h的头文件就可以正常使用语音合成功能了。

#import "ViewController.h"
#import "FKTTSManager.h"

@interface ViewController ()

@property (weak, nonatomic) IBOutlet UISlider *speedSlider;

@property (weak, nonatomic) IBOutlet UITextView *readTextV;

@property (weak, nonatomic) IBOutlet UILabel *speedL;

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    [self configureTextView];
}

- (void)dealloc {
    
    [[FKTTSManager shareManager] stopSpeak];
}

#pragma mark - TextView

- (void)configureTextView {
    
    self.readTextV.text = @"这些就是我很想说的";
}


#pragma mark - SliderValueChange

- (IBAction)speedSliderValueChange:(id)sender {
    
    self.speedL.text = [NSString stringWithFormat:@"语速 %.0f",self.speedSlider.value * 10];
}

#pragma mark - Action

- (IBAction)startRead:(id)sender {
    
    [[FKTTSManager shareManager] configureSpeed:self.speedSlider.value];
    [[FKTTSManager shareManager] configureReadStr:self.readTextV.text];
}

- (IBAction)pauseRead:(id)sender {
    
    [[FKTTSManager shareManager] pauseSpeak];
}


- (IBAction)continueRead:(id)sender {
    
    [[FKTTSManager shareManager] continueSpeak];
}


- (IBAction)stopRead:(id)sender {
    
    [[FKTTSManager shareManager] stopSpeak];
}


- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

FKTTSManager中开放了以下5个方法,注释都有说明各方法的功能,如果有兴趣的朋友可以直接下载Demo,Demo中也有详细注释。

/**根据偏好设置调整语速*/
- (void)configureSpeed:(float)speedValue;

/**朗读某一段*/
- (void)configureReadStr:(NSString*)readStr;

/**暂停朗读*/
- (void)pauseSpeak;

/**继续朗读*/
- (void)continueSpeak ;

/**停止朗读*/
- (void)stopSpeak;

补充说明

FKTTSManager是基于AVSpeechSynthesizer做的封装,AVSpeechSynthesizer支持多种自定义项,其中包括以下几个属性。

//设置音高,[0.5 - 2] 默认 = 1
//AVSpeechUtteranceMaximumSpeechRate
//AVSpeechUtteranceMinimumSpeechRate
//AVSpeechUtteranceDefaultSpeechRate
pitchMultiplier
//设置音量,[0-1] 默认 = 1
volume
//读一段前的停顿时间
preUtteranceDelay
    
//读完一段后的停顿时间
postUtteranceDelay

AVSpeechUtterance可以设置对应的语言,如果设置的语言不能识别文本不能生成语音播放,苹果支持的语言如下:

 Arabic (ar-SA)
 Chinese (zh-CN, zh-HK, zh-TW)
 Czech (cs-CZ)
 Danish (da-DK)
 Dutch (nl-BE, nl-NL)
 English (en-AU, en-GB, en-IE, en-US, en-ZA)
 Finnish (fi-FI)
 French (fr-CA, fr-FR)
 German (de-DE)
 Greek (el-GR)
 Hebrew (he-IL)
 Hindi (hi-IN)
 Hungarian (hu-HU)
 Indonesian (id-ID)
 Italian (it-IT)
 Japanese (ja-JP)
 Korean (ko-KR)
 Norwegian (no-NO)
 Polish (pl-PL)
 Portuguese (pt-BR, pt-PT)
 Romanian (ro-RO)
 Russian (ru-RU)
 Slovak (sk-SK)
 Spanish (es-ES, es-MX)
 Swedish (sv-SE)
 Thai (th-TH)
 Turkish (tr-TR)

结尾语

FKTTSManager是一个相对简单的小Demo,现在只针对了语速做了自定义操作,有兴趣的朋友可以下载Demo看一下,注释还比较详细。AVSpeechSynthesizer其他属性的自定义设置也并不困难,本人有时间可以再把Demo完善一下,而且我相信看过FKTTSManager源码的朋友也一定可以自己增加其他属性的自定义功能。

你可能感兴趣的:(iOS 语音合成助手 FKTTSManager)