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. JS实现的在线推荐逻辑

    import _ from 'lodash';import cfg from '../cfg/cfg';import {Response} from '../shared/lib/response'; ...

  2. CentOS 7 引导 -- GRUB2

    如果安装完 CentOS 7 之后,原来的 Windows 引导菜单被覆盖了,vi /boot/grub2/grub.cfg 添加如下代码: ## BEGIN WINDOWS 10 menuentry ...

  3. To the end

    身为一名初二狗的我也走过了半年.不管怎么说人生中也没有几个半年嘛.从九月到现在快四个月了,我也离中考越来越近了/郁闷/.但是还是要好好过唔.不过我想起这半学期还是挺充实的,至少没有浪费太多的时间.有些 ...

  4. 分享基于.NET MVC+EF CodeFirst+IOC+EasyUI的框架设计

    **注:要做工,没什么时间,等有空时会上传到GIT,项目结构如上,简单的说一下: **支持IOC及多数据库等,各项目由MVC区域隔离: 主要使用基于接口与抽象类进行高度的抽象与接口隔离,与其它框架比较 ...

  5. 利用VR技术,走进白宫,走进奥巴马

    奥马巴卸任演讲由诺基亚OZO全程360° VR直播,并不是每个人都能去白宫拜访,一窥白宫内部的模样,更不可能有多少人有机会在奥马巴面前听他讲讲他的家.   现在前任总统巴拉克奥巴马以及其夫人米歇尔奥巴 ...

  6. Weblogic概念与基础

    WebLogic Server 1.BEA WebLogic Server 1.Domain:域是个逻辑概念,用来组织管理一系列的应用服务器实例,中心配置文件Config.xml. 2.Cluster ...

  7. 重要的几个热键[Tab], [ctrl]-c, [ctrl]-d

    来源于:鸟哥的Linux私房菜 在继续后面的章节之前,这里很需要跟大家再来报告一件事,那就是我们的文字模式里头具有很多的功能按键, 这些按键可以辅助我们进行指令的编写与程序的中断呢!这几个按键请大家务 ...

  8. shrio登录验证

    shiro的认证过程也就是判断用户名和密码的过程,在认证过程中,用户需要提交实体信息(用户名)(Principals)和凭据信息(密码)(Credentials)来判断用户是否合法,最常见的" ...

  9. openSuse使用技巧

    1.opensuse的gnome默认使用nautilus作为文件浏览工具,若要设置文件的默认排序和视图,参考网页 https://thelinuxexperiment.com/change-the-d ...

  10. Java的URL来下载网页源码

    import java.io.BufferedInputStream; import java.io.BufferedReader; import java.io.IOException; impor ...