-
Notifications
You must be signed in to change notification settings - Fork 271
AUAudioCapture
jiangdsuccess edited this page Dec 15, 2017
·
27 revisions
与声音处理相关的模块有如下两个:
- KSYAUAudioCapture基于iOS的AudioUnit接口实现的音频采集和处理功能.
- KSYBGMPlayer基于iOS的AudioQueue实现的背景音乐播放器.
其中音频处理主要包括如下四种:
- 美声(混响)是主播声音叠加增强的过程,让直播现场效果更强;金山云SDK暂支持录音棚、演唱会、KTV、小舞台四种效果,四种效果依次不断增强
- 变声是将主播声音变为搞怪的特效处理,能够增强互动时的趣味性;金山云SDK暂支持大叔、萝莉、庄重、机器人四种效果
- 降噪 是对主播声音的处理, 将背景噪声过滤掉, 使主播的声音更清晰; 金山云SDK支持4档不同强度的噪声抑制,可以根据具体场景选择.
- 升降调是主播唱歌时伴奏的特效处理,即从低沉到高亢的一个过程,更适用于较专业的唱歌直播;金山云SDK支持-3至3从低沉到高亢的7个等级的调节,0为原始音效,具体等级可根据客户业务需求做自定义处理
前三种为采集模块的功能, 最后一种为播放音乐时的功能.
- Kit类提供
@property (nonatomic, readonly) KSYAUAudioCapture *aCapDev;
- 创建音频采集对象
_aCapDev = [[KSYAUAudioCapture alloc] init];
- 启动音频采集
[_aCapDev startCapture];
- 停止音频采集
[_aCapDev stopCapture];
- 用户自定义音频采集后回调
_aCapDev.audioProcessingCallback = ^(CMSampleBufferRef buf){
}
_aCapDev.reverbType = 3;
- 取值及效果:
reverbType= 0;//关闭
reverbType =1;//录音棚
reverbType =2;//演唱会
reverbType =3;//KTV
reverbType =4;//小舞台
_aCapDev.effecType = KSYAudioEffectType_ROBOT;
取值范围请参见文档
KSYAudioEffectType_NONE = 0; //关闭
KSYAudioEffectType_MALE = 1; //大叔
KSYAudioEffectType_FEMALE = 2; //萝莉
KSYAudioEffectType_HEROIC = 3; //庄重
KSYAudioEffectType_ROBOT = 4; //机器人
KSYAudioEffectType_COUSTOM = 5; //自定义
- 自定义
自定义场景从v2.9.5引入,用户可以通过参数调用接口直接设置reverb参数、pitchShift参数和delay参数来满足自身需要的场景
/**
@abstract 变调组合类型,可以设置reverb、pitchShift和delay三种效果的自由组合
@注意 在设置effectTypeFlag时,请先将effectType设置成KSYAudioEffectType_COUSTOM模式,否则effectTypeFlag设置无法生效
**/
@property(nonatomic, assign) int effectTypeFlag;
/**
@abstract 自定义reverb参数接口
@param inValue reverb参数对应的值
@param inID reverb参数(0~6), 对应关系如下
- 0 kReverb2Param_DryWetMix
- 1 kReverb2Param_Gain
- 2 kReverb2Param_MinDelayTime
- 3 kReverb2Param_MaxDelayTime
- 4 kReverb2Param_DecayTimeAt0Hz
- 5 kReverb2Param_DecayTimeAtNyquist
- 6 kReverb2Param_RandomizeReflections
**/
- (void) setReverbParamID:(AudioUnitParameterID)inID
withInValue:(AudioUnitParameterValue)inValue;
/**
@abstract 自定义pitchShift参数接口
@param inValue pitchShift参数对应的值
@param inID pitchShift参数,对应关系如下
- 0 kNewTimePitchParam_Rate
- 1 kNewTimePitchParam_Pitch (SDK中变调主要是调这个参数)
- 4 kNewTimePitchParam_Overlap
- 6 kNewTimePitchParam_EnablePeakLocking
**/
- (void) setPitchParamID:(AudioUnitParameterID)inID
withInValue:(AudioUnitParameterValue)inValue;
/**
@abstract 自定义delay参数接口
@param inValue delay参数对应的值
@param inID delay参数(0~3),对应关系如下
- 0 kDelayParam_WetDryMix
- 1 kDelayParam_DelayTime
- 2 kDelayParam_Feedback
- 3 kDelayParam_LopassCutoff
**/
- (void) setDelayParamID:(AudioUnitParameterID)inID
withInValue:(AudioUnitParameterValue)inValue;
- 是否播放采集的声音
@property(nonatomic, assign) BOOL bPlayCapturedAudio;
- 噪声抑制处理的等级(默认为KSYAudioNoiseSuppress_HIGH)
- 设置为KSYAudioNoiseSuppress_OFF 可以关闭噪声抑制
@property (nonatomic, assign) KSYAudioNoiseSuppress noiseSuppressionLevel
- 取值从0.0~1.0;
@property(nonatomic, assign) Float32 micVolume;
1. 本模块是基于AudioUnit实现的低延时音频采集模块;
2. 本模块能够对采集的语音添加混响效果(目前支持4类混响场景),用户可以在音频采集的过程自由切换混响场景;
3. 本模块能够对采集的声音低延时播放,帮助主播选择音效(又称"耳返");
4. 本模块采集的声音通过回调函数提供出来。
注意:当使用本模块时,需要禁用KSYGPUCamera中的音频采集,即在创建KSYGPUCamera对象后,
不需要调用addAudioInputsAndOutputs来添加音频采集模块。