苹果原生文字转语音播报
1、CHiOSSpeech.h
//
// 文 件 名:CHiOSSpeech.h
//
// 版权所有:Copyright © 2018年 leLight. All rights reserved.
// 创 建 者:leLight
// 创建日期:2018/7/30.
// 文档说明:苹果原生文字转语音播报.
// 修 改 人:
// 修改日期:
// #import <Foundation/Foundation.h>
#import <AVFoundation/AVFoundation.h>@protocol CHiOSSpeechDelegate <NSObject>
@optional
/************ 开始播放 *****************************/
- (void)speechSynthesizer:(AVSpeechSynthesizer*)synthesizer didStartSpeechUtterance:(AVSpeechUtterance*)utterance;
/************ 完成播放 *****************************/
- (void)speechSynthesizer:(AVSpeechSynthesizer*)synthesizer didFinishSpeechUtterance:(AVSpeechUtterance*)utterance;
/************ 播放中止 *****************************/
- (void)speechSynthesizer:(AVSpeechSynthesizer*)synthesizer didPauseSpeechUtterance:(AVSpeechUtterance*)utterance;
/************ 恢复播放 *****************************/
- (void)speechSynthesizer:(AVSpeechSynthesizer*)synthesizer didContinueSpeechUtterance:(AVSpeechUtterance*)utterance;
/************ 播放取消 *****************************/
- (void)speechSynthesizer:(AVSpeechSynthesizer*)synthesizer didCancelSpeechUtterance:(AVSpeechUtterance*)utterance;@end@interface CHiOSSpeech : NSObject/** 文字播报代理 */
@property (nonatomic, weak) id<CHiOSSpeechDelegate> delegate;/************ 单例对象 *****************************/
+ (CHiOSSpeech *)sharedInstance;
/************ 开始播放 *****************************/
- (void)startSpeekWithString:(NSString *)string;
/************ 暂停播放 *****************************/
- (void)pauseSpeaking;
/************ 继续播放 *****************************/
- (void)continueSpeaking;// 初始化配置:这里不设置则使用默认参数
/*** 设置播放的声音参数 如果选择默认请传入 -1.0** @param aVolume 音量(0.0~1.0)默认为1.0* @param aRate 语速(0.0~1.0)默认为1.0* @param aPitchMultiplier 语调 (0.5-2.0)默认为1.0* @param languageCode 语言 默认为 中文普通话:@"zh-CN"*/
- (void)setDefaultWithVolume:(float)aVolumerate:(CGFloat)aRatepitchMultiplier:(CGFloat)aPitchMultiplierlanguageCode:(NSString *)languageCode;@end
2、CHiOSSpeech.m
//
// 文 件 名:CHiOSSpeech.m
//
// 版权所有:Copyright © 2018年 leLight. All rights reserved.
// 创 建 者:leLight
// 创建日期:2018/7/30.
// 文档说明:苹果原生文字转语音播报.
// 修 改 人:
// 修改日期:
// #import "CHiOSSpeech.h"@interface CHiOSSpeech () <AVSpeechSynthesizerDelegate>
{AVSpeechSynthesizer *av;AVSpeechUtterance *utterance;
}/** 语速 */
@property(nonatomic, assign) float rate;
/** 音量 */
@property(nonatomic, assign) float volume;
/** 音调 */
@property(nonatomic, assign) float pitchMultiplier;
/** 音调 */
@property(nonatomic, copy) NSString *languageCode;@end@implementation CHiOSSpeech/************ 单例对象 *****************************/
+ (CHiOSSpeech *)sharedInstance {static CHiOSSpeech *sharedClient = nil;static dispatch_once_t onceToken;dispatch_once(&onceToken, ^{sharedClient = [[CHiOSSpeech alloc] init];});return sharedClient;
}/************ 初始化创建 *****************************/
- (instancetype)init {self = [super init];if (self) {// 初始化对象av = [[AVSpeechSynthesizer alloc] init];// 挂上代理av.delegate = self;// 初始化配置[self setDefaultWithVolume:-1.0 rate:-1.0 pitchMultiplier:-1.0 languageCode:@"zh-CN"];};return self;
}/************ 开始播放 *****************************/
- (void)startSpeekWithString:(NSString *)string {utterance = [[AVSpeechUtterance alloc] initWithString:string];// 设置语速,范围0-1,注意0最慢,1最快;AVSpeechUtteranceMinimumSpeechRate最慢,AVSpeechUtteranceMaximumSpeechRate最快utterance.rate = 0.5;//设置发音,这是中文普通话:@"zh-CN"AVSpeechSynthesisVoice *voice = [AVSpeechSynthesisVoice voiceWithLanguage:self.languageCode];utterance.voice = voice;// 设置语速utterance.rate = self.rate;// 设置音量(0.0~1.0)默认为1.0utterance.volume = self.volume;// 设置语调 (0.5-2.0)utterance.pitchMultiplier = self.pitchMultiplier;// 目的是让语音合成器播放下一语句前有短暂的暂停utterance.postUtteranceDelay = 1;// 开始[av speakUtterance:utterance];
}/************ 暂停播放 *****************************/
- (void)pauseSpeaking {[av pauseSpeakingAtBoundary:AVSpeechBoundaryWord];
}/************ 继续播放 *****************************/
- (void)continueSpeaking {// 如果暂停则恢复,会从暂停的地方继续[av continueSpeaking];
}#pragma mark ***************************** AVSpeechSynthesizerDelegate ***********************************************
/************ 开始播放 *****************************/
- (void)speechSynthesizer:(AVSpeechSynthesizer*)synthesizer didStartSpeechUtterance:(AVSpeechUtterance*)utterance {CHLog(@"是否正在播放:%d", synthesizer.isSpeaking);CHLog(@"是否处于播放:%d", synthesizer.isPaused);CHLog(@"播放的内容:%@", utterance.speechString);CHLog(@"---开始播放");if([self.delegate respondsToSelector:@selector(speechSynthesizer: didStartSpeechUtterance:)]) {[self.delegate speechSynthesizer:synthesizer didStartSpeechUtterance:utterance];}
}/************ 完成播放 *****************************/
- (void)speechSynthesizer:(AVSpeechSynthesizer*)synthesizer didFinishSpeechUtterance:(AVSpeechUtterance*)utterance {CHLog(@"---完成播放");if([self.delegate respondsToSelector:@selector(speechSynthesizer: didFinishSpeechUtterance:)]) {[self.delegate speechSynthesizer:synthesizer didFinishSpeechUtterance:utterance];}
}/************ 播放中止 *****************************/
- (void)speechSynthesizer:(AVSpeechSynthesizer*)synthesizer didPauseSpeechUtterance:(AVSpeechUtterance*)utterance {CHLog(@"---播放中止");if([self.delegate respondsToSelector:@selector(speechSynthesizer: didPauseSpeechUtterance:)]) {[self.delegate speechSynthesizer:synthesizer didPauseSpeechUtterance:utterance];}
}/************ 恢复播放 *****************************/
- (void)speechSynthesizer:(AVSpeechSynthesizer*)synthesizer didContinueSpeechUtterance:(AVSpeechUtterance*)utterance {CHLog(@"---恢复播放");if([self.delegate respondsToSelector:@selector(speechSynthesizer: didContinueSpeechUtterance:)]) {[self.delegate speechSynthesizer:synthesizer didContinueSpeechUtterance:utterance];}
}/************ 播放取消 *****************************/
- (void)speechSynthesizer:(AVSpeechSynthesizer*)synthesizer didCancelSpeechUtterance:(AVSpeechUtterance*)utterance {CHLog(@"---播放取消");if([self.delegate respondsToSelector:@selector(speechSynthesizer: didCancelSpeechUtterance:)]) {[self.delegate speechSynthesizer:synthesizer didCancelSpeechUtterance:utterance];}
}// 初始化配置
/*** 设置播放的声音参数 如果选择默认请传入 -1.0** @param aVolume 音量(0.0~1.0)默认为1.0* @param aRate 语速(0.0~1.0)默认为1.0* @param aPitchMultiplier 语调 (0.5-2.0)默认为1.0* @param languageCode 语言 默认为 中文普通话:@"zh-CN"*/
- (void)setDefaultWithVolume:(float)aVolume rate:(CGFloat)aRate pitchMultiplier:(CGFloat)aPitchMultiplier languageCode:(NSString *)languageCode {self.rate = aRate;self.volume = aVolume;self.pitchMultiplier = aPitchMultiplier;self.languageCode = languageCode;if (aRate == -1.0) {self.rate = 0.5;}if (aVolume == -1.0) {self.volume = 1.0;}if (aPitchMultiplier == -1.0) {self.pitchMultiplier = 1;}
}@end
转载于:https://www.cnblogs.com/CH520/p/10087593.html
苹果原生文字转语音播报相关推荐
- ios 原生语音识别,百度翻译API使用,原生文字转语音播报
若有不正之处,希望大家不吝赐教,谢谢! 原生语音识别所需: 首先需要再plist文件中加入: Privacy - Speech Recognition Usage Description 需要使用si ...
- java 文字转换成语音 代码_java文字转语音播报功能的实现方法
前言 本文主要给大家分享了关于java文字转语音播报的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧 方法如下 一.pom.xml引入jar包依赖 com.hynnet ja ...
- Android如何解决文字转语音播报的问题
如何解决文字转语音的问题 1.网上的普遍解决方式 2.我自己需求和解决方式 3.总结 1.网上的普遍解决方式 TTS+语音引擎实现离线的语音播报的功能 下载百度,讯飞等厂家的离线SDK(收费) 由于这 ...
- SpeechSynthesisUtterance文字转语音播报
一.介绍 SpeechSynthesisUtterance是HTML5中新增的API,用于将指定文字合成为对应的语音.也包含一些配置项,指定如何去阅读(语言,音量,音调)等 二.基本属性 var sp ...
- Linux文字转语音播报总结
一.平台: Linux +Qt或win10 二.实现功能 实现播报重量数据,举例:"过磅重量为12345.7千克"或是"过磅重量为1万2千3百4十5点7千克" ...
- java文字转语音播报并输出文件
一.pom.xml引入jar包依赖 <!-- https://mvnrepository.com/artifact/com.jacob/jacob 文字转语音 --> <depend ...
- python之pyttsx3实现文字转语音播报
1. pyttsx3是什么 pyttsx3是Python中的文本到语音转换库,可以实现文本的朗读功能. 2. pyttsx3的安装 pip install pyttsx3 3. pyttsx3的dem ...
- QT应用编程: 调用系统语音引擎完成文字转语音播报
一.环境介绍 操作系统介绍:win10 64位 QT版本: 5.12.6 二.示例代码 在工程文件里加上代码: QT += texttospeechQTextToSpeech *m_speech=ne ...
- Android离线文字转语音(TTS)原生实现
目前文字转语音用的最多的是第三方厂商科大讯飞,不过需要收费.google也有离线文字转语音sdk,支持中文,发音也很好,使用免费的它不更香么!下边介绍具体使用步骤: 一.下载并设置Google文字转语 ...
最新文章
- 独家 | 手把手教你在试验中修正机器学习模型(附学习资源)
- 学计算机的大一新生需要买电脑吗,大一新生到底是否需要买笔记本?学长说出真理,经验分享...
- XCTF-高手进阶区:baby_web
- .NET Core + Kubernetes:Helm
- Linux挂载iso文件步骤
- 洛谷 1776 宝物筛选 【多重背包+二进制拆分】
- MAC下学习UNIX网络编程
- 【武忠祥高等数学基础课笔记】第一章 函数、极限、连续
- 匿名通信攻击技术:主动攻击、被动攻击、单端攻击、端到端攻击
- 塑料齿轮模具设计指南
- 迅雷android 电视,【迅雷电视助手】迅雷电视助手安卓版(Android)2.0下载_太平洋下载中心...
- 乡村的野蛮生长|独秀日记
- 有没有网上打印可以派送的?
- Android UI + Function
- 公告:博客新皮肤上线啦
- SAP中可替代物料按比例使用消耗分析测试
- Dubbo框架-概念-基础案例
- 【论文笔记】SOTR: Segmenting Objects with Transformers
- Ceva xm4 DSP开发心得(转)
- FFmpeg命令(六)、 视频提取无音视频
热门文章
- 可以参考《SpringMVC接口测试异常:Can not deserialize instance
- Clustered Data ONTAP Fundamentals课程学习(1)
- android UI设计属性中英对照表(未修订)
- zabbix数据库分表的实现
- “快”和“持久”对弈:非旗舰处理器的破局之路
- 《JavaScript启示录》——1.7 原始值(或简单值)
- 当UINavigationController作为UIViewController之后如何去除上部的空白
- iptables的应用
- Visual Studio 2008 SDK Version 和Microsoft Visual Studio 2008 Shell发布了
- 常见Promise面试题