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. Oracle wm_concat(列转行函数)实际使用

    接触到了一个开发需求.其中是要把NC单据表体行的字段拼成一个字符串.例如: id name work age 1 王一 搬运工 20 2 李二 清洁工 21 3 张三 洗脚工 22 出现结果字符串为: ...

  2. 双色球机选算法java实现

    双色球机选算法java实现 一.代码 package com.hdwang; import java.util.Random; /** * Created by admin on 2017/1/10. ...

  3. iOS -不同模拟器字体适配

    1.先建立一个UILabel的分类 导入#import <objc/runtime.h>头文件 2.在.m文件中写入如下代码 //不同设备的屏幕比例(当然倍数可以自己控制) #define ...

  4. 在server2012安装tfs遇到的问题:KB2919355

    参考资料:http://blog.csdn.net/wo_984633714/article/details/52869851 安装tfs2015的时候,提示需要安装KB2919355的更新.然后我就 ...

  5. NGINX----源码阅读----(option配置脚本)

    /auto/options options文件主要负责nginx启动前配置脚本对环境变量初始化. 1.默认为环境变量赋值 help=no NGX_PREFIX= NGX_SBIN_PATH= NGX_ ...

  6. hdu1722

    链接 一份切成q份需要q刀,切成p份需要p刀:切的部分总会有重复,即gcd(p,q),减去重复部分就是要切的刀数 #include<stdio.h> int gcd(int n,int m ...

  7. Attribute的理解和认识

    1什么是Attribute? 在网上看到这样一段定义 MADN的定义为:公共语言运行时允许添加类似关键字的描述声明,叫做attributes, 它对程序中的元素进行标注,如类型.字段.方法和属性等.A ...

  8. Winform ComBox模糊查询

    一.添加数据源并绑定 List<string> list = new List<string>(); list.Add("张三"); list.Add(&q ...

  9. IOS 加载网络图片2

    //1. NSData dataWithContentsOfURL // [self.icon setImage:[UIImage imageWithData:[NSData dataWithCont ...

  10. WinForms 实现气泡提示窗口(转载)

    [实例说明] 气泡提示因为他的美观又好被大多数用户所接收,用户所喜爱的就是程序员要实现的. 本实例实现了任务栏气泡提示,运行本实例,效果图如下所示: 单击提示.气泡提示就会显示,单击“关闭”气泡又会消 ...