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. java基础练习 4

    import java.util.Scanner; public class Forth { public static void main(String[] args){ /*请输入星期几的第一个字 ...

  2. oc内容5大区

    1.堆区(malloc):不需要手动管理内存,自动管理 2.栈区(stack):需要手动管理内存 3.静态区 4.常量区 5.方法区 load类方法:把类加载进内存的时候调用,只会调用一次 initi ...

  3. ng1 http 读取json数据

    在前端开发过程中,有时后端还没开发出接口,需要经常自己构造获取本地mock数据. AngularJS XMLHttpRequest $http 是 AngularJS 中的一个核心服务,用于读取远程服 ...

  4. angular中的cookie读写

    AngularJS中对cookie的操作封装了一个单独的模块,模块名为ngCookies,若想使用需在页面中先引入angular-cookies.js: <script src="js ...

  5. line-height 行高

    line-height 行高指一行文字的高度,具体来说是指两行文子间基线间的距离      line-height 与 font-size 的计算值之差(行距)分为两半,分别加到一个文本行内容的顶部和 ...

  6. Java 多线程 笔记 转自http://www.cnblogs.com/lwbqqyumidi/p/3804883.html

    多线程作为Java中很重要的一个知识点, 一.线程的生命周期及五种基本状态 关于Java中线程的生命周期,首先看一下下面这张较为经典的图: 上图中基本上囊括了Java中多线程各重要知识点.掌握了上图中 ...

  7. on事件绑定阻止冒泡的问题

    当使用on进行事件绑定时当要给document绑定click,而子元素要禁止冒泡,那么子元素里面的子元素的click事件就会无效了, 下面无效版: $('#queue').on('click', '. ...

  8. The property System

    The property System 和其它编译器厂商一样, Qt 也提供了复杂的属性机制, 但是作为一个编译器无关.平台无关的库,Qt没有那些不被标准编译器支持的特征, 如 BCB的 __prop ...

  9. 从excel读数据到informix的Found a quote for which there is no matching quote错误

    我从excel读取数据,然后存储到Informix数据库里.偶尔会发现出现Found a quote for which there is no matching quote这个错误.调试后发现,是因 ...

  10. windows自带的线程池

    #define _CRT_SECURE_NO_WARNINGS #include "iostream" #include "windows.h" using n ...