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中对于多媒体的支持是非常强大的,无论是音视频播放.录制,还是对麦克风.摄像头的操 ...
随机推荐
- 用Canvas,画中国国旗(Canvas基本知识点)
.getContext("2d")=======>获取绘图接口 //2d .beginPath()========>创建绘图路径开始点 .moveTo(x,y)==== ...
- console.dir()和console.log()的区别
console.log()可以取代alert()或document.write(),在网页脚本中使用console.log(data)时,会在控制台打印出数据. console.dir()可以显示一个 ...
- Codeforces Round #390 (Div. 2)
时隔一个月重返coding…… 期末复习了一个月也不亏 倒是都过了…… 就是计组61有点亏 复变68也太低了 其他都还好…… 假期做的第一场cf 三道题 还可以…… 最后room第三 standing ...
- Linux连接xshell找不到IP信息
虚拟机环境下的Linux连接xshell的网络连接找不到eth0(IP)信息的解决方法 1 输入ifconfig,如果有eth0信息,直接填写eth0上面的IP信息 2 输入ifconfig ...
- WPS Office 二次开发简易教程。
http://bbs.wps.cn/forum.php?mod=viewthread&tid=22004642
- Saltstack Master 配置文件详解
#主配置 /etc/salt/master interface 默认值:0.0.0.0(所有的网络地址接口) 绑定到本地的某个网络地址接口 interface: 192.168.30.131 publ ...
- Unity3DGUI:鼠标click
Input函数监测鼠标操作 鼠标点击事件 鼠标双击事件
- ios开发之简单实现loading动画效果
最近有朋友问我类似微信语音播放的喇叭动画和界面图片加载loading界面是怎样实现的,是不是就是一个gif图片呢!我的回答当然是否定了,当然不排除也有人用gif图片啊!下面我就来罗列三种实现loadi ...
- RF环境安装-mac-osx10.10-基础环境-安装指南
一.适用环境: mac系列,osx10.10,自带Python 二.简要步骤: 1. 安装pip,mac自带Python环境,所以我们改成安装pip 2. 安装wxPython,此处我下载的版本是wx ...
- .net 在数据访问层中写一个DBhelper优化类
复习了在学校的时候做的WinForm端的一个学生信息管理系统,用的三层架构,看了一下里面的数据优化类 这个类是用来把对数据库的操作封装成静态方法,增删改查的时候直接调用这个类,减少项目里代码的冗余和方 ...