オーディオレコーダー(MCI)
TsgcAudioRecorderMCI は、Windows の MCI API を通じてマイク音声を WAV ファイルに録音します。入力レベルを監視し、一定時間の無音が続くと区切りを自動的に閉じます。これによりハンズフリーの音声対話が実現します。
TsgcAudioRecorderMCI は、Windows の MCI API を通じてマイク音声を WAV ファイルに録音します。入力レベルを監視し、一定時間の無音が続くと区切りを自動的に閉じます。これによりハンズフリーの音声対話が実現します。
無音検出を備えた、ファイルベースのマイク録音です。チャットボット、翻訳、アシスタントの各コンポーネントが既定で想定しているレコーダーです。
sgcAI は単体で完結しています。このコンポーネントは、土台となる sgcWebSockets Core ランタイムとともに sgcAI に同梱されているため、基本ライセンスを購入する必要はありません。
レベルのしきい値と無音の判定時間を設定して開始するだけです。発話がどこで終わったかはコンポーネントが判断します。
uses
sgcAI, sgcAI_AudioRecorder_MCI;
var
oRecorder: TsgcAudioRecorderMCI;
begin
oRecorder := TsgcAudioRecorderMCI.Create(nil);
oRecorder.RecorderOptions.Filename := 'question.wav';
oRecorder.RecorderOptions.Mode := camoAuto;
// Stop after 1500 ms below the level threshold.
oRecorder.MCIOptions.LevelMin := 100;
oRecorder.MCIOptions.StopAfter := 1500;
oRecorder.Start; // Stop ends capture immediately
// Usually you just hand it to a voice component:
sgcAIOpenAIChatBot1.AudioRecorder := oRecorder;
end;
// includes: sgcAI.hpp, sgcAI_AudioRecorder_MCI.hpp
TsgcAudioRecorderMCI *oRecorder = new TsgcAudioRecorderMCI(NULL);
oRecorder->RecorderOptions->Filename = "question.wav";
oRecorder->RecorderOptions->Mode = camoAuto;
oRecorder->MCIOptions->LevelMin = 100;
oRecorder->MCIOptions->StopAfter = 1500;
oRecorder->Start();
sgcAIOpenAIChatBot1->AudioRecorder = oRecorder;
最もよく使うメンバーです。
Filename は WAV の書き出し先です。Mode では、Start と Stop を自分で呼び出す camoManual か、回答の読み上げが終わるたびに録音を再開する camoAuto を選べます。
LevelMin は、この値を下回ると無音とみなす入力レベルです。StopAfter は、区切りを閉じるまでに無音が継続すべき時間です。
Start で録音を開始し、Stop で即座に終了します。自動モードでは無音検出が代わりに Stop を呼び出します。
音声は 22050 Hz、16 ビットモノラルで取得されます。音声認識エンドポイントが想定している形式であり、アップロードするファイルも小さく保てます。
各レコーダーは固有の MCI エイリアスを確保するため、同一プロセス内で 2 つのレコーダーを互いに干渉させずに動かせます。
チャットボット、翻訳、アシスタントの各コンポーネントの AudioRecorder に割り当てれば、録音、文字起こし、回答という一連のループがすべて自動で処理されます。