iOS7以后AVSpeechSynthesizer苹果开放了这个类   它可以将文本转化成声音并播放;

下面的是我的封装使用起来特别简单;

//

//  TTSSpeak.h

//  SayLoveYou

//

//  Created by zyyt on 16/7/1.

//

//

/*

汉语:             zh-CN      (普通话)

粤语:             zh-HK

英语:                en-US

俄语:              ru-RU

日语:              ja-JP

泰语:                 th-TH

德语:                 de-DE

韩语:                  ko-KO

法语:                  fr-FR

希腊语:              gr-GR

意大利语:          it-IT

西班牙语:       es-ES

阿拉伯语:       ar-Ar

葡萄牙语:       pt-PT

*/

#import <Foundation/Foundation.h>

@interface TTSSpeak : NSObject

//所需的源语言

@property (nonatomic,copy)NSString * languageCode;

//播放的速度

@property (nonatomic,readonly)NSString * playRate;

//当前播放的源语言

@property (nonatomic,readonly)NSString * currentLanguageCode;

//声音大小

@property(nonatomic) NSString * volume;           // [0-1] Default = 1

+ (instancetype)shareInstance;

/*

* playText:播放的文本

*languageCode:播放的语言

*rate:播放的速度 默认为0.7

*/

- (void)playText:(NSString*)playText withNativeLanguage:(NSString*)languageCode rate:(NSString *)rate volume:(NSString*)volume ;

//停止播放

- (BOOL)stopSpeaking;

//暂停播放

- (BOOL)pauseSpeaking;

//继续播放

- (BOOL)continueSpeaking;

@end

//

//  TTSSpeak.m

//  SayLoveYou

//

//  Created by zyyt on 16/7/1.

//

//

#import "TTSSpeak.h"

#import <AVFoundation/AVFoundation.h>

@interface TTSSpeak ()

@property (nonatomic,copy)NSString * rate;

@property (nonatomic,strong)AVSpeechSynthesizer * speechSynthesizer;

@property (nonatomic,copy)NSString * LanguageCode;

@end

@implementation TTSSpeak

- (AVSpeechSynthesizer *)speechSynthesizer

{

if (_speechSynthesizer == nil) {

_speechSynthesizer = [[AVSpeechSynthesizer alloc] init];

}

return _speechSynthesizer;

}

+ (instancetype)shareInstance

{

static TTSSpeak * sharedAccountManagerInstance = nil;

static dispatch_once_t predicate;

dispatch_once(&predicate, ^{

sharedAccountManagerInstance = [[TTSSpeak alloc] init];

});

return sharedAccountManagerInstance;

}

- (void)playText:(NSString*)playText withNativeLanguage:(NSString*)languageCode rate:(NSString *)rate volume:(NSString*)volume {

self.rate = rate;

[self setLanguageCode:languageCode];

AVSpeechSynthesisVoice * voice = [AVSpeechSynthesisVoice voiceWithLanguage:languageCode];

AVSpeechUtterance *  utterance = [[AVSpeechUtterance alloc] initWithString:playText];

utterance.rate *= [rate floatValue];

utterance.volume = volume?[volume floatValue]:[self.volume floatValue];

self.volume = volume?volume:self.volume;

if (!rate) {

utterance.rate *= 0.7;

}

utterance.voice = voice;

[self.speechSynthesizer speakUtterance:utterance];

}

- (BOOL)stopSpeaking

{

return  [self.speechSynthesizer stopSpeakingAtBoundary:AVSpeechBoundaryImmediate];

}

- (BOOL)pauseSpeaking{

return     [self.speechSynthesizer pauseSpeakingAtBoundary:AVSpeechBoundaryImmediate];

}

- (BOOL)continueSpeaking

{

return    [self.speechSynthesizer continueSpeaking];

}

- (NSString *)playRate

{

if (!self.rate) {

return @"0.7";

}

return self.rate;

}

- (NSString *)currentLanguageCode

{

if (!self.languageCode) {

return @"没有设置源语言";

}

return self.languageCode;

}

@end

iOS开发播放文本的更多相关文章

  1. IOS开发计算文本尺寸

    在IOS开发中例如微博,QQ聊天界面中要显示大量的文字信息,这样需要计算出文字部分的尺寸,才能设计出合适的控件尺寸和位置.下面是IOS 7.0计算文本尺寸的方法.- (CGRect)boundingR ...

  2. iOS开发——TTS文本发音

    iOS的文本转发音,从iOS7开始,iOS系统自带这个功能.能够实现中文.英文的发音.而且实现的起来非常方便.就像我看到有的博主说的三行代码搞定. (在iOS7之前(目前已不适配了),比如iOS6实现 ...

  3. iOS开发富文本制作 图片和文字/NSMutableParagraphStyle/NSMutableAttributedString

    /NSMutableParagraphStyle/NSMutableAttributedString 组合使 NSString * titlestr=@"日产GT-R"; NSMu ...

  4. iOS 开发富文本之TTTAttributedLabel 在某个特定位置的文字添加跳转,下划线,修改字体大小,颜色

    @property(nonatomic , strong) TTTAttributedLabel * ttLabel; @property(nonatomic , strong) NSRange li ...

  5. iOS开发富文本

    NSMutableAttributedString * attributedStr = [[NSMutableAttributedString alloc] initWithString:@" ...

  6. iOS开发系列--音频播放、录音、视频播放、拍照、视频录制

    --iOS多媒体 概览 随着移动互联网的发展,如今的手机早已不是打电话.发短信那么简单了,播放音乐.视频.录音.拍照等都是很常用的功能.在iOS中对于多媒体的支持是非常强大的,无论是音视频播放.录制, ...

  7. IOS开发之简单音频播放器

    今天第一次接触IOS开发的UI部分,之前学OC的时候一直在模拟的使用Target-Action回调模式,今天算是真正的用了一次.为了熟悉一下基本控件的使用方法,和UI部分的回调,下面开发了一个特别简易 ...

  8. 给iOS开发新手送点福利,简述文本属性Attributes的用法

    给iOS开发新手送点福利,简述文本属性Attributes的用法   文本属性Attributes 1.NSKernAttributeName: @10 调整字句 kerning 字句调整 2.NSF ...

  9. iOS开发----音频播放、录音、视频播放、拍照、视频录制

    随着移动互联网的发展,如今的手机早已不是打电话.发短信那么简单了,播放音乐.视频.录音.拍照等都是很常用的功能.在iOS中对于多媒体的支持是非常强大的,无论是音视频播放.录制,还是对麦克风.摄像头的操 ...

随机推荐

  1. 用Canvas,画中国国旗(Canvas基本知识点)

    .getContext("2d")=======>获取绘图接口 //2d .beginPath()========>创建绘图路径开始点 .moveTo(x,y)==== ...

  2. console.dir()和console.log()的区别

    console.log()可以取代alert()或document.write(),在网页脚本中使用console.log(data)时,会在控制台打印出数据. console.dir()可以显示一个 ...

  3. Codeforces Round #390 (Div. 2)

    时隔一个月重返coding…… 期末复习了一个月也不亏 倒是都过了…… 就是计组61有点亏 复变68也太低了 其他都还好…… 假期做的第一场cf 三道题 还可以…… 最后room第三 standing ...

  4. Linux连接xshell找不到IP信息

    虚拟机环境下的Linux连接xshell的网络连接找不到eth0(IP)信息的解决方法   1  输入ifconfig,如果有eth0信息,直接填写eth0上面的IP信息   2 输入ifconfig ...

  5. WPS Office 二次开发简易教程。

    http://bbs.wps.cn/forum.php?mod=viewthread&tid=22004642

  6. Saltstack Master 配置文件详解

    #主配置 /etc/salt/master interface 默认值:0.0.0.0(所有的网络地址接口) 绑定到本地的某个网络地址接口 interface: 192.168.30.131 publ ...

  7. Unity3DGUI:鼠标click

    Input函数监测鼠标操作 鼠标点击事件 鼠标双击事件

  8. ios开发之简单实现loading动画效果

    最近有朋友问我类似微信语音播放的喇叭动画和界面图片加载loading界面是怎样实现的,是不是就是一个gif图片呢!我的回答当然是否定了,当然不排除也有人用gif图片啊!下面我就来罗列三种实现loadi ...

  9. RF环境安装-mac-osx10.10-基础环境-安装指南

    一.适用环境: mac系列,osx10.10,自带Python 二.简要步骤: 1. 安装pip,mac自带Python环境,所以我们改成安装pip 2. 安装wxPython,此处我下载的版本是wx ...

  10. .net 在数据访问层中写一个DBhelper优化类

    复习了在学校的时候做的WinForm端的一个学生信息管理系统,用的三层架构,看了一下里面的数据优化类 这个类是用来把对数据库的操作封装成静态方法,增删改查的时候直接调用这个类,减少项目里代码的冗余和方 ...