NaudioでLLMに聞かせる準備をする
音声会話の準備として自分がしゃべった音を単純に録音して再生するプログラムを作成しました。このあと録音した音をWhisperで文字起しをしてその文字をLLMへの質問文として使用します。
Whisperで必要なwavファイルに合わせて録音を開始します。録音を止めるにはEnterを押すとそのまま再生されます。Naudioで再生したかったのですがSystem.Mediaを使用しています。ターゲットOSがWindowsでないとSoundPlayerが使えないのでご注意ください。
Naudioで検索してNuGetしてください
using NAudio.Wave;
using System.Media;
public class Program
{
static void Main(string[] args)
{
WaveFileWriter waveWriter;
WaveInEvent waveIn = new WaveInEvent();
//16000のwavで録音、録音デバイスは1番を使用
waveIn.WaveFormat = new WaveFormat(16000, 1);
MemoryStream memSt = new MemoryStream();
waveWriter = new WaveFileWriter(memSt, waveIn.WaveFormat);
//NAudioイベント定義
waveIn.DataAvailable += (_, e) =>
{
//録音イベント
waveWriter.WriteData(e.Buffer, 0, e.BytesRecorded);
};
Console.WriteLine("**録音開始**");
//録音開始
waveIn.StartRecording();
Console.WriteLine("**録音を終了する時はEnterを押す**");
string strInput = Console.ReadLine() ?? "";
//録音停止
waveIn.StopRecording();
waveIn.Dispose();
waveWriter.Flush();
waveWriter.Dispose();
memSt = new MemoryStream(memSt.ToArray());
var player = new SoundPlayer(memSt);
//音声再生
player.PlaySync();
}
}