Audio Recorder (Wave)
TsgcAudioRecorderWave는 Windows Wave API로 마이크를 녹음하고, 오디오를 파일이 아니라 실시간 스트림으로 전달합니다. 샘플 레이트와 채널 수, 비트 심도를 직접 제어할 수 있어 스트리밍과 실시간 시나리오에 적합합니다.
TsgcAudioRecorderWave는 Windows Wave API로 마이크를 녹음하고, 오디오를 파일이 아니라 실시간 스트림으로 전달합니다. 샘플 레이트와 채널 수, 비트 심도를 직접 제어할 수 있어 스트리밍과 실시간 시나리오에 적합합니다.
스트리밍 마이크 녹음 컴포넌트입니다. 워커가 버퍼를 계속 준비해 큐에 넣고, 블록마다 레벨을 측정하며, 설정한 시간만큼 무음이 이어지면 구간을 마무리합니다.
sgcAI는 자체 완결형 제품입니다. 이 컴포넌트는 기반이 되는 sgcWebSockets Core 런타임과 함께 sgcAI에 포함되어 제공되므로, 별도로 구매해야 할 기본 라이선스가 없습니다.
샘플 형식을 고르고 무음 임계값을 설정한 뒤 시작하세요. 오디오는 디스크의 파일이 아니라 스트림으로 전달됩니다.
uses
sgcAI, sgcAI_AudioRecorder_Wave;
var
oRecorder: TsgcAudioRecorderWave;
begin
oRecorder := TsgcAudioRecorderWave.Create(nil);
oRecorder.WaveOptions.SampleRate := 16000;
oRecorder.WaveOptions.Channels := 1;
oRecorder.WaveOptions.BitsPerSample := 16;
// Silence detection on the measured block level.
oRecorder.WaveOptions.LevelMin := 300;
oRecorder.WaveOptions.StopAfter := 1200;
oRecorder.WaveOptions.WaitForAudio := 100;
oRecorder.Start; // Stop ends capture
end;
// includes: sgcAI.hpp, sgcAI_AudioRecorder_Wave.hpp
TsgcAudioRecorderWave *oRecorder = new TsgcAudioRecorderWave(NULL);
oRecorder->WaveOptions->SampleRate = 16000;
oRecorder->WaveOptions->Channels = 1;
oRecorder->WaveOptions->BitsPerSample = 16;
oRecorder->WaveOptions->LevelMin = 300;
oRecorder->WaveOptions->StopAfter = 1200;
oRecorder->Start();
가장 자주 사용하게 되는 멤버들입니다.
SampleRate, Channels, BitsPerSample로 녹음 형식을 정확히 지정할 수 있어, 뒤에 오는 모델이나 코덱이 요구하는 형식에 맞출 수 있습니다.
LevelMin은 이 값 아래면 블록을 무음으로 간주하는 RMS 레벨이고, StopAfter는 그 무음이 얼마나 이어지면 구간을 마무리할지, WaitForAudio는 각 버퍼를 채우는 데 허용할 시간입니다.
녹음이 진행되는 동안 오디오가 스트림으로 전달되므로, 파일이 닫히기를 기다리지 않고 실시간 엔드포인트로 전달하거나 곧바로 인코딩할 수 있습니다.
Start가 녹음을 시작하고 Stop이 종료합니다. 녹음 루프는 전용 워커에서 실행되므로 UI 스레드가 차단되지 않습니다.
특정 샘플 형식이나 실시간 스트림이 필요할 때 이 컴포넌트를 사용하세요. 발화마다 WAV 파일 하나면 충분하다면 TsgcAudioRecorderMCI를 사용하면 됩니다.
RMS 레벨은 16비트 샘플에서 블록 단위로 계산되며, UI의 레벨 미터를 구동하는 데에도 그대로 사용할 수 있습니다.