iOS开发播放文本
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开发播放文本的更多相关文章
- IOS开发计算文本尺寸
在IOS开发中例如微博,QQ聊天界面中要显示大量的文字信息,这样需要计算出文字部分的尺寸,才能设计出合适的控件尺寸和位置.下面是IOS 7.0计算文本尺寸的方法.- (CGRect)boundingR ...
- iOS开发——TTS文本发音
iOS的文本转发音,从iOS7开始,iOS系统自带这个功能.能够实现中文.英文的发音.而且实现的起来非常方便.就像我看到有的博主说的三行代码搞定. (在iOS7之前(目前已不适配了),比如iOS6实现 ...
- iOS开发富文本制作 图片和文字/NSMutableParagraphStyle/NSMutableAttributedString
/NSMutableParagraphStyle/NSMutableAttributedString 组合使 NSString * titlestr=@"日产GT-R"; NSMu ...
- iOS 开发富文本之TTTAttributedLabel 在某个特定位置的文字添加跳转,下划线,修改字体大小,颜色
@property(nonatomic , strong) TTTAttributedLabel * ttLabel; @property(nonatomic , strong) NSRange li ...
- iOS开发富文本
NSMutableAttributedString * attributedStr = [[NSMutableAttributedString alloc] initWithString:@" ...
- iOS开发系列--音频播放、录音、视频播放、拍照、视频录制
--iOS多媒体 概览 随着移动互联网的发展,如今的手机早已不是打电话.发短信那么简单了,播放音乐.视频.录音.拍照等都是很常用的功能.在iOS中对于多媒体的支持是非常强大的,无论是音视频播放.录制, ...
- IOS开发之简单音频播放器
今天第一次接触IOS开发的UI部分,之前学OC的时候一直在模拟的使用Target-Action回调模式,今天算是真正的用了一次.为了熟悉一下基本控件的使用方法,和UI部分的回调,下面开发了一个特别简易 ...
- 给iOS开发新手送点福利,简述文本属性Attributes的用法
给iOS开发新手送点福利,简述文本属性Attributes的用法 文本属性Attributes 1.NSKernAttributeName: @10 调整字句 kerning 字句调整 2.NSF ...
- iOS开发----音频播放、录音、视频播放、拍照、视频录制
随着移动互联网的发展,如今的手机早已不是打电话.发短信那么简单了,播放音乐.视频.录音.拍照等都是很常用的功能.在iOS中对于多媒体的支持是非常强大的,无论是音视频播放.录制,还是对麦克风.摄像头的操 ...
随机推荐
- open live writer下载安装
以前记笔记都是用Evernote,啥都记在上面.除了学习工作的以外,还有各种账号密码啦(这个真心有必要,再也不用各种试了),妈妈要我帮她下载的广场舞名字啦,我双十一要剁手的东西啦等等.很好用的,推荐! ...
- aop为系统添加操作日志,注入或配置声明的方式来实现
最近做项目实现操作记录添加日志,由于aop这两种实现方式各有优缺点,所以都实现了一下以后根据具体业务选择. 1实现方式一注入: 1.1首先在xml中开启aop注入,需要引入的包此处省略,可百度自己查找 ...
- lua中string常用api
local a="abcdefgbbb" string.sub(a,1,3) 字符串截取 返回截取的字符串 print(string.sub(a,1,3)) ...
- maven初步入门demo
Maven是跨平台的项目管理工具.作为Apache组织中的一个颇为成功的开源项目,主要服务于基于java平台的项目构建.依赖管理和项目信息管理. maven本身使用java开发而成,所以使用前确保电脑 ...
- The APR based Apache Tomcat Native library tomcat启动错误
The APR based Apache Tomcat Native library which allows optimal performance in production environmen ...
- MYSQL的一些函数
原文地址:http://blog.sina.com.cn/s/blog_52d20fbf0100ofd5.html 1,字符串类的函数 CHARSET(str) //返回字串字符集CONCAT (st ...
- Gentoo网络管理方法总结
OpenRC/netifrc Netifrc is a collection of modules created to configure and manage network interfaces ...
- 7、Objective-C中的各种遍历(迭代)方式
一.使用for循环 要遍历字典.数组或者是集合,for循环是最简单也用的比较多的方法,示例如下: //普通的for循环遍历 -(void)iteratorWithFor { //////////处理数 ...
- Intelli IDEA 使用教程
1.怎样修改字体 File-Settings-color&Fonts-Fonts
- ubuntu14.04下安装ice3.5.1
ubuntu 14.04下是可以通过下面这条指令安装ice3.5的 sudo apt-get install libzeroc-ice35-dev 1. 从这里下载ice源文件 主要包括两部分:ice ...