# VoiceKit (opens new window)
# 该组件基于苹果底层 AVKit 封装了语音录制、播放及识别等语音功能为一体组件,为处理语音逻辑提供了便利。
# 其中语音识别集成了科大讯飞语音识别 (opens new window) IOS SDK
# 该组件集成至语音业务需求的App应用内,其组件内部抽象程度和调用程度较高。
# 说明
- 集成语音的录音、播放及格式转换功能为组件内
- 业务需要也集成了录音时UI控制,方便业务快速成型
# 安装
- 该组件适用于IOS 10 (opens new window) 及以上SDK应用运行
- 该组件遵守Cocoapods (opens new window) 协议,并通过Cocoapods (opens new window) 进行集成
在项目 Podfile 文件内添加
pod 'VoiceKit', :source => 'http://192.168.100.254:3000/iosteam/SuplusSpec.git'
在项目目录下执行脚本
pod install
插件即可集成至项目内
# 使用
首先需要全局配置
在VoiceKit (opens new window) 是单例对象,如没有使用请及时销毁对象
创建方法如下:
+ (instancetype)sharedInstance;
销毁方法如下:
// dealloc 中调用
- (void)recordDestroy;
在VoiceKit (opens new window) 中有几个重要API如下:
录制语音API
/**
录音功能
@param view 当前显示录音父View
@param mp3NameBlock 返回要生成的mp3名带上格式.mp3
@param completedBlock 录音完成回调
*/
- (void)recordStartWithView:(UIView *)view
RecordReturnMp3NameBlock:(nullable NSString*(^)(NSString *voicePCMPath))mp3NameBlock
RecordCompletedBlock:(void (^)(NSString *recognizerVoiceValue, NSString *voiceMp3Path, NSUInteger voiceMp3PlaySecond, NSError *error))completedBlock;
在录制过程中组件提供了控制APIs
// 停止录制控制
- (void)recordStop;
// 预先取消录制控制
- (void)preCancelRecord;
// 取消录制控制
- (void)recordCancel;
// 继续录音控制
- (void)reuseRecord;
播放语音API
/**
播放功能
@param voiceUrl 播放录音的URL 本地和网络 URL 查看NSURL 进行封装
@param progressBlock 播放进度Block
@param completedBlock 播放完成Block
默认情况下扬声器播放 音量 0.5
*/
- (void)playWithUrl:(NSURL *)voiceUrl playDuration:(NSInteger)duration
PlayProcessBlock:(void (^)(CGFloat progress,NSString *playTime,NSString *playTotal))progressBlock
PlayCompletedBlock:(void (^)(NSError *error))completedBlock;
在播放语音过程提供播放控制APIs
/**
是否在播放中
@return 是否播放
*/
- (BOOL)playing;
/**
是否在缓冲中
@return 返回BOOL
*/
- (BOOL)playCaching;
/**
播放暂停
*/
- (void)playPause;
/**
播放恢复
*/
- (void)playReuse;
/**
播放停止
*/
- (void)playStop;
- (void)playStopNotNeedCallbak;
识别语音API
/**
识别API
@param sourcePath 内容存放路径
@param compledBlock 完成返回结果
*/
- (void)recognizerSourcePath:(NSString *)sourcePath completedBlock:(void (^)(NSString *recognizerValue))compledBlock;
而外还功能对MP3文件存在工具API方便开发者使用。
/**
是否存在指定文件
*/
+ (BOOL)existFileWithName:(NSString *)name;
/**
带上Mp3名字,给出当前源文件路径
@param name name.mp3
@return 返回当前文件原地址
*/
+ (NSString *)mp3SourcePathWithName:(NSString *)name;
/**
从本地 删除指定 mp3
@param name name.mp3
@return 返回是否删除成功
*/
+ (BOOL)deleteMp3SourcePathWithName:(NSString *)name;