56 lines
1.5 KiB
C
56 lines
1.5 KiB
C
|
|
//
|
|||
|
|
// AudioCaptureManager.h
|
|||
|
|
// keyBoard
|
|||
|
|
//
|
|||
|
|
// Created by Mac on 2026/1/15.
|
|||
|
|
//
|
|||
|
|
|
|||
|
|
#import <Foundation/Foundation.h>
|
|||
|
|
|
|||
|
|
NS_ASSUME_NONNULL_BEGIN
|
|||
|
|
|
|||
|
|
/// 音频采集参数(固定值,便于端到端稳定)
|
|||
|
|
/// Sample Rate: 16000 Hz
|
|||
|
|
/// Channels: 1 (Mono)
|
|||
|
|
/// Format: PCM Int16 (pcm_s16le)
|
|||
|
|
/// Frame Duration: 20ms (320 samples, 640 bytes)
|
|||
|
|
extern const double kAudioSampleRate; // 16000.0
|
|||
|
|
extern const int kAudioChannels; // 1
|
|||
|
|
extern const NSUInteger kAudioFrameDuration; // 20 (ms)
|
|||
|
|
extern const NSUInteger kAudioFrameSamples; // 320 (16000 * 0.02)
|
|||
|
|
extern const NSUInteger kAudioFrameBytes; // 640 (320 * 2)
|
|||
|
|
|
|||
|
|
/// 音频采集管理器代理
|
|||
|
|
@protocol AudioCaptureManagerDelegate <NSObject>
|
|||
|
|
@required
|
|||
|
|
/// 输出 PCM 帧(20ms / 640 bytes)
|
|||
|
|
/// @param pcmFrame 640 字节的 PCM Int16 数据
|
|||
|
|
- (void)audioCaptureManagerDidOutputPCMFrame:(NSData *)pcmFrame;
|
|||
|
|
|
|||
|
|
@optional
|
|||
|
|
/// 更新 RMS 值(用于波形显示)
|
|||
|
|
/// @param rms 当前音量的 RMS 值 (0.0 - 1.0)
|
|||
|
|
- (void)audioCaptureManagerDidUpdateRMS:(float)rms;
|
|||
|
|
@end
|
|||
|
|
|
|||
|
|
/// 音频采集管理器
|
|||
|
|
/// 使用 AVAudioEngine 采集麦克风音频,输出 20ms PCM 帧
|
|||
|
|
@interface AudioCaptureManager : NSObject
|
|||
|
|
|
|||
|
|
@property(nonatomic, weak) id<AudioCaptureManagerDelegate> delegate;
|
|||
|
|
|
|||
|
|
/// 是否正在采集
|
|||
|
|
@property(nonatomic, assign, readonly, getter=isCapturing) BOOL capturing;
|
|||
|
|
|
|||
|
|
/// 开始采集
|
|||
|
|
/// @param error 错误信息
|
|||
|
|
/// @return 是否启动成功
|
|||
|
|
- (BOOL)startCapture:(NSError **)error;
|
|||
|
|
|
|||
|
|
/// 停止采集
|
|||
|
|
- (void)stopCapture;
|
|||
|
|
|
|||
|
|
@end
|
|||
|
|
|
|||
|
|
NS_ASSUME_NONNULL_END
|