# VoiceKit (opens new window)

# 该组件基于苹果底层 AVKit 封装了语音录制、播放及识别等语音功能为一体组件,为处理语音逻辑提供了便利。

# 其中语音识别集成了科大讯飞语音识别 (opens new window) IOS SDK

# 该组件集成至语音业务需求的App应用内,其组件内部抽象程度和调用程度较高。

# 说明

  • 集成语音的录音、播放及格式转换功能为组件内
  • 业务需要也集成了录音时UI控制,方便业务快速成型

# 安装

在项目 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;
最后更新时间: 11/24/2021, 7:45:32 AM