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

苹果原生文字转语音播报相关推荐

  1. ios 原生语音识别,百度翻译API使用,原生文字转语音播报

    若有不正之处,希望大家不吝赐教,谢谢! 原生语音识别所需: 首先需要再plist文件中加入: Privacy - Speech Recognition Usage Description 需要使用si ...

  2. java 文字转换成语音 代码_java文字转语音播报功能的实现方法

    前言 本文主要给大家分享了关于java文字转语音播报的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧 方法如下 一.pom.xml引入jar包依赖 com.hynnet ja ...

  3. Android如何解决文字转语音播报的问题

    如何解决文字转语音的问题 1.网上的普遍解决方式 2.我自己需求和解决方式 3.总结 1.网上的普遍解决方式 TTS+语音引擎实现离线的语音播报的功能 下载百度,讯飞等厂家的离线SDK(收费) 由于这 ...

  4. SpeechSynthesisUtterance文字转语音播报

    一.介绍 SpeechSynthesisUtterance是HTML5中新增的API,用于将指定文字合成为对应的语音.也包含一些配置项,指定如何去阅读(语言,音量,音调)等 二.基本属性 var sp ...

  5. Linux文字转语音播报总结

    一.平台: Linux +Qt或win10 二.实现功能 实现播报重量数据,举例:"过磅重量为12345.7千克"或是"过磅重量为1万2千3百4十5点7千克" ...

  6. java文字转语音播报并输出文件

    一.pom.xml引入jar包依赖 <!-- https://mvnrepository.com/artifact/com.jacob/jacob 文字转语音 --> <depend ...

  7. python之pyttsx3实现文字转语音播报

    1. pyttsx3是什么 pyttsx3是Python中的文本到语音转换库,可以实现文本的朗读功能. 2. pyttsx3的安装 pip install pyttsx3 3. pyttsx3的dem ...

  8. QT应用编程: 调用系统语音引擎完成文字转语音播报

    一.环境介绍 操作系统介绍:win10 64位 QT版本: 5.12.6 二.示例代码 在工程文件里加上代码: QT += texttospeechQTextToSpeech *m_speech=ne ...

  9. Android离线文字转语音(TTS)原生实现

    目前文字转语音用的最多的是第三方厂商科大讯飞,不过需要收费.google也有离线文字转语音sdk,支持中文,发音也很好,使用免费的它不更香么!下边介绍具体使用步骤: 一.下载并设置Google文字转语 ...

最新文章

  1. 独家 | 手把手教你在试验中修正机器学习模型(附学习资源)
  2. 学计算机的大一新生需要买电脑吗,大一新生到底是否需要买笔记本?学长说出真理,经验分享...
  3. XCTF-高手进阶区:baby_web
  4. .NET Core + Kubernetes:Helm
  5. Linux挂载iso文件步骤
  6. 洛谷 1776 宝物筛选 【多重背包+二进制拆分】
  7. MAC下学习UNIX网络编程
  8. 【武忠祥高等数学基础课笔记】第一章 函数、极限、连续
  9. 匿名通信攻击技术:主动攻击、被动攻击、单端攻击、端到端攻击
  10. 塑料齿轮模具设计指南
  11. 迅雷android 电视,【迅雷电视助手】迅雷电视助手安卓版(Android)2.0下载_太平洋下载中心...
  12. 乡村的野蛮生长|独秀日记
  13. 有没有网上打印可以派送的?
  14. Android UI + Function
  15. 公告:博客新皮肤上线啦
  16. SAP中可替代物料按比例使用消耗分析测试
  17. Dubbo框架-概念-基础案例
  18. 【论文笔记】SOTR: Segmenting Objects with Transformers
  19. Ceva xm4 DSP开发心得(转)
  20. FFmpeg命令(六)、 视频提取无音视频

热门文章

  1. 可以参考《SpringMVC接口测试异常:Can not deserialize instance
  2. Clustered Data ONTAP Fundamentals课程学习(1)
  3. android UI设计属性中英对照表(未修订)
  4. zabbix数据库分表的实现
  5. “快”和“持久”对弈:非旗舰处理器的破局之路
  6. 《JavaScript启示录》——1.7 原始值(或简单值)
  7. 当UINavigationController作为UIViewController之后如何去除上部的空白
  8. iptables的应用
  9. Visual Studio 2008 SDK Version 和Microsoft Visual Studio 2008 Shell发布了
  10. 常见Promise面试题