KSYAUAudioCapture Class Reference

Inherits from NSObject
Declared in KSYAUAudioCapture.h

Overview

音频采集模块

  1. 基于 AudioUnit 实现的低延时音频采集模块
  2. 支持对采集的语音添加混响音效 (目前提供了4种类型的混响场景)
  3. 支持将采集的声音低延时播放,帮助主播选择音效 (又称"耳返")
  4. 支持对采集的音频进行降噪处理
  5. 采集的声音通过回调函数提供出来
  6. 当启用噪声抑制功能时,输出音频数据的采样率为16K(重采样得到,与采集的采样率无关)

– initWithSampleRate:

指定采集音频的采样率

- (id)initWithSampleRate:(double)sampleRate

Parameters

sampleRate

指定的采样率 , 默认为44100Hz

Return Value

采集设备实例

Discussion

Warning: 请尽量使用默认的44100, 使用其他的采样率可能导致混响和变声等功能异常

Declared In

KSYAUAudioCapture.h

– startCapture

启动音频采集, 占据麦克风资源

- (BOOL)startCapture

Return Value

是否启动采集成功

Declared In

KSYAUAudioCapture.h

– stopCapture

停止音频采集, 释放麦克风资源

- (void)stopCapture

Declared In

KSYAUAudioCapture.h

– pauseCapture

暂停音频采集(仍然占用麦克风资源) 停止回调音频数据

- (BOOL)pauseCapture

Declared In

KSYAUAudioCapture.h

– pauseWithMuteData

暂停音频采集(仍然占用麦克风资源), 回调静音音频数据

- (BOOL)pauseWithMuteData

Declared In

KSYAUAudioCapture.h

– resumeCapture

恢复正常音频采集和回调

- (BOOL)resumeCapture

Declared In

KSYAUAudioCapture.h

  bPlayCapturedAudio

是否播放采集的声音 (又称"耳返")

@property (nonatomic, assign) BOOL bPlayCapturedAudio

Discussion

Warning: 如果在没有插入耳机的情况下启动, 容易出现很刺耳的声音

Declared In

KSYAUAudioCapture.h

  enableVoiceProcess

是否使用带回声消除的采集模块(默认为NO)

@property (nonatomic, assign) BOOL enableVoiceProcess

Discussion

请在连麦开始时在设置此属性为YES, 连麦结束记得设置为NO

此属性为YES时, 启动采集一定会打断其他音乐播放

Declared In

KSYAUAudioCapture.h

  noiseSuppressionLevel

噪声抑制处理的等级(默认为KSYAudioNoiseSuppress_OFF)

@property (nonatomic, assign) KSYAudioNoiseSuppress noiseSuppressionLevel

Discussion

当启用噪声抑制处理后, 内部会进行输出音频数据的

Declared In

KSYAUAudioCapture.h

  bForceAudioSessionCatogary

是否强制设置AVAudioSession的类别为PlayAndRecord(默认为YES)

@property (nonatomic, assign) BOOL bForceAudioSessionCatogary

Discussion

此属性为YES时, 每次启动采集会将类别强制设置为AVAudioSessionCategoryPlayAndRecord

为了避免别APP中的其他SDK将AVAudioSession的类别修改为无法录音,导致无法采集到声音

Declared In

KSYAUAudioCapture.h

  micVolume

设置mic采集的声音音量

@property (nonatomic, assign) Float32 micVolume

Discussion

调整范围 0.0~1.0

Declared In

KSYAUAudioCapture.h

  outputPts

最近一次输出的音频包的时间戳

@property (nonatomic, readonly) CMTime outputPts

Declared In

KSYAUAudioCapture.h

  reverbType

混响类型

@property (nonatomic, assign) int reverbType

Discussion

目前提供了4种类型的混响场景, type和场景的对应关系如下

  • 0 关闭
  • 1 录音棚
  • 2 ktv
  • 3 小舞台
  • 4 演唱会

Declared In

KSYAUAudioCapture.h

  effectType

音效类型

@property (nonatomic, assign) KSYAudioEffectType effectType

Discussion

音效类型仅在enableVoiceProcess=NO时有效

Declared In

KSYAUAudioCapture.h

  audioProcessingCallback

采集数据输出回调函数

@property (nonatomic, copy) void ( ^ ) ( CMSampleBufferRef sampleBuffer ) audioProcessingCallback

Discussion

sampleBuffer 为采集到的音频数据

与pcmProcessingCallback两者只能二选一, 设置 audioProcessingCallback 会清空pcmProcessingCallback

Declared In

KSYAUAudioCapture.h

  pcmProcessingCallback

采集数据输出回调函数

@property (nonatomic, copy) void ( ^ ) ( uint8_t **pData , int len , const AudioStreamBasicDescription *fmt , CMTime timeInfo ) pcmProcessingCallback

Discussion

pData 和 len 为采集数据和长度 (目前只支持单声道, 只有pData[0]为有效数据指针 )

与audioProcessingCallback两者只能二选一, 设置 pcmProcessingCallback 会清空audioProcessingCallback

Declared In

KSYAUAudioCapture.h

  customPlayCallback

用户可以自定义播放的内容,直接把数据填入ioData

@property (nonatomic, copy) void ( ^ ) ( AudioBufferList *ioData , UInt32 inumber ) customPlayCallback

Discussion

ioData 目前只支持int16 的单声道数据

Declared In

KSYAUAudioCapture.h

+ isHeadsetPluggedIn

是否有耳机麦克风可用

+ (BOOL)isHeadsetPluggedIn

Return Value

是/否有耳机麦克风

Declared In

KSYAUAudioCapture.h

  isRunning

设备是否正在采集音频数据

@property (nonatomic, readonly) BOOL isRunning

Declared In

KSYAUAudioCapture.h

  effectTypeFlag

变调组合类型

@property (nonatomic, assign) int effectTypeFlag

Discussion

目前提供了8种类型的变调场景, flag和变调组合类型的对应关系如下 - 0 无组合 - 1 reverb - 2 delay - 3 reverb+delay - 4 pitchShift - 5 reverb+pitchShift - 6 delay+pitchShift - 7 reverb+delay+pitchShift

Warning: 在设置effectTypeFlag时,请先将effectType设置成KSYAudioEffectType_COUSTOM模式,否则effectTypeFlag设置无法生效

Declared In

KSYAUAudioCapture.h

– setReverbParamID:withInValue:

自定义混响参数接口

- (void)setReverbParamID:(AudioUnitParameterID)inID withInValue:(AudioUnitParameterValue)inValue

Parameters

inID

混响参数(0~6), 对应关系如下 - 0 kReverb2Param_DryWetMix - 1 kReverb2Param_Gain - 2 kReverb2Param_MinDelayTime - 3 kReverb2Param_MaxDelayTime - 4 kReverb2Param_DecayTimeAt0Hz - 5 kReverb2Param_DecayTimeAtNyquist - 6 kReverb2Param_RandomizeReflections *

inValue

混响参数对应的值

Declared In

KSYAUAudioCapture.h

– setPitchParamID:withInValue:

自定义pitchShift参数接口

- (void)setPitchParamID:(AudioUnitParameterID)inID withInValue:(AudioUnitParameterValue)inValue

Parameters

inID

pitchShift参数,对应关系如下 - 0 kNewTimePitchParam_Rate - 1 kNewTimePitchParam_Pitch (SDK中变调主要是调这个参数) - 4 kNewTimePitchParam_Overlap - 6 kNewTimePitchParam_EnablePeakLocking *

inValue

pitchShift参数对应的值

Declared In

KSYAUAudioCapture.h

– setDelayParamID:withInValue:

自定义delay参数接口

- (void)setDelayParamID:(AudioUnitParameterID)inID withInValue:(AudioUnitParameterValue)inValue

Parameters

inID

delay参数(0~3),对应关系如下 - 0 kDelayParam_WetDryMix - 1 kDelayParam_DelayTime - 2 kDelayParam_Feedback - 3 kDelayParam_LopassCutoff *

inValue

delay参数对应的值

Declared In

KSYAUAudioCapture.h