iOS开发TTS技术即文本转语音

iOS开发TTS技术即文本转语音

iOS系统文本转语音的实现

在iOS7之前,想要实现语音播报文字内容,可能需要第三方资源库来实现。现在在iOS之后,系统为我们提供了语音播报文字的功能,我们不仅可以播报英语内容,也可以播报汉语文字实现。
TTS[Text To Speech] :
主要依赖AVSpeechSynthesizer,AVSpeechUtterance,AVSpeechSynthesisVoice,要使用这些类必须先加入AVFoundation框架
AVSpeechSynthesisVoice:用来配置发音,支持的发音非常多;
[AVSpeechSynthesisVoicespeechVoices]类方法可用看到支持的发音种类;
AVSpeechUtterance:这个类就是用来将字符串合成为语音对象提供给AVSpeechSynthesizer来播放,这个类还有一些实例方法用来控制语速,音调等等。。

实现代码:系统实现方法比较简单,但需要在iOS7之上才可以,IOS7之前一般语音识别是靠一些第三方库,或者使用谷歌语音接口(下文介绍)
创建一个textField,输入将要播放的文本,创建一个button,实现文本转语音

self.textField = [[UITextField alloc] initWithFrame:CGRectMake(100, 100, 150, 30)];
[self.view addSubview:self.textField]; self.textField.borderStyle = 3;
self.textField.placeholder = @"请输入文本";

self.button = [UIButton buttonWithType:UIButtonTypeSystem];
[self.view addSubview:self.button];
self.button.frame = CGRectMake(100, 180, 100, 30);
[self.button setTitle:@"语音播放" forState:UIControlStateNormal];
[self.button addTarget:self action:@selector(playString:) forControlEvents:UIControlEventTouchUpInside];

文本转语音方法实现代码:

- (void)playString:(UIButton *)button
{
    if (![self.textField.text isEqualToString:@""]) {
        AVSpeechUtterance *utterance = [AVSpeechUtterance speechUtteranceWithString:self.textField.text];
        AVSpeechSynthesisVoice *voice = [AVSpeechSynthesisVoice voiceWithLanguage:@"zh-CN"];//设置语言
        utterance.voice = voice;
        NSLog(@"%@",[AVSpeechSynthesisVoice speechVoices]);
        utterance.volume= 1;  //设置音量(0.0~1.0)默认为1.0
        utterance.rate= 0.01;  //设置语速
        utterance.pitchMultiplier= 1.1;  //设置语调
        AVSpeechSynthesizer *synth = [[AVSpeechSynthesizer alloc]init];
        [synth speakUtterance:utterance];

    }
}

据我测试,iOS提供的接口合成的语音比较生硬且没有停顿

你可能感兴趣的:(iOS开发,TTS,文本转语音)