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中对于多媒体的支持是非常强大的,无论是音视频播放.录制,还是对麦克风.摄像头的操 ...
随机推荐
- Cloudera Manager 5.9 和 CDH 5.9 离线安装指南及个人采坑填坑记
公司的CDH早就装好了,一直想自己装一个玩玩,最近组了台电脑,笔记本就淘汰下来了,加上之前的,一共3台,就在X宝上买了CPU和内存升级了下笔记本,就自己组了个集群. 话说,好想去捡垃圾,捡台8核16线 ...
- python调用ansible api 2.0 运行playbook带callback返回
# -*- coding:utf8 -*- ''' Created on 2017年1月13日 @author: qiancheng ''' import os import json from co ...
- 图像预处理(Evision)
Convolution //采用线性过滤Linear combination of neighboring pixels using a convolution kernel−Pre-defined ...
- cobbler 奇葩出错
写此随笔,只是为了记录我安装cobbler遇到的奇怪问题,虽然这个问题很让我无语,但是竟然折腾了我一天.废话不多说,入题: 一如既往的按照以前的安装方式安装cobbler,不会出错的地方我就一带而过了 ...
- [UWP小白日记-12]使用新的Composition API来实现控件的阴影
前言 看了好久官方的Windows UI Dev Labs示例好久才有点心得,真是头大.(其实是英语幼儿园水平(⊙﹏⊙)b) 真的网上关于这个API的资料可以说几乎没有. 正文 首先用这东西的添加WI ...
- 笔记 bug和任务 工具
云表格 https://www.huoban.com/禅道
- Malware Defender(HIPS主动防御软件) V2.8 免费版
软件名称: Malware Defender(HIPS主动防御软件) V2.8 免费版 软件语言: 简体中文 授权方式: 免费软件 运行环境: Win7 / Vista / Win2003 / Win ...
- css1
背景属性:background;background-color;background-image;background-repeat;(背景是否重复,有repeat-x 横式重复,repeat-y竖 ...
- HTTP请求返回状态详解
当用户试图通过 HTTP 访问一台正在运行 Internet 信息服务 (IIS) 的服务器上的内容时,IIS 返回一个表示该请求的状态的数字代码.状态代码可以指明具体请求是否已成功,还可以揭示请求失 ...
- Java代理模式汇总
简介 代理模式即Proxy Pattern,23种java常用设计模式之一.其定义为:对其他对象提供一种代理以控制对这个对象的访问. UML类图 静态代理 目标接口 public interface ...