Voskで会話を文字起しする①

過去記事の「会話の間が空いたときに文字起しする」は、あまりいい結果を残せず実践で使ってません。Discordの音声受信もとん挫してしまっているので何とかせねばと思っていた矢先。
Voskというよさげなものがあるみたいなので早速Exsampleを実行してみました。

Alpha Cephei incのVoskのダウンロード:https://alphacephei.com/vosk/models
Japaneseを探して大きいのか小さいのか、お好きな方をダウンロード

Nuget情報

概要
VoskDemoのDemoBytesのみに編集。所定の場所にあるtest01.wavを読み込んで文字起しをする。
modelにはダウンロードしたzipを解凍した「vosk-model-ja-xxx」のディレクトリパスを設定する。

test01.wav

using Vosk;

public class VoskDemo
{
    private static string wavPath = Environment.GetEnvironmentVariable("TESTDATA", System.EnvironmentVariableTarget.User) +"test01.wav";
    public static void DemoBytes(Model model)
    {
        // Demo byte buffer
        VoskRecognizer rec = new VoskRecognizer(model, 16000.0f);
        rec.SetMaxAlternatives(0);
        rec.SetWords(true);
        using (Stream source = File.OpenRead(wavPath))
        {
            byte[] buffer = new byte[4096];
            int bytesRead;
            while ((bytesRead = source.Read(buffer, 0, buffer.Length)) > 0)
            {
                if (rec.AcceptWaveform(buffer, bytesRead))
                {
                    Console.WriteLine(rec.Result());
                }
                else
                {
                    Console.WriteLine(rec.PartialResult());
                }
            }
        }
        Console.WriteLine(rec.FinalResult());
    }

    public static void Main()
    {
        // You can set to -1 to disable logging messages
        Vosk.Vosk.SetLogLevel(0);

        Model model = new Model(Environment.GetEnvironmentVariable("LLMPATH", System.EnvironmentVariableTarget.User)+@"vosk\vosk-model-ja-0.22");
        DemoBytes(model);

    }
}



テスト結果
ちゃんと認識しているようです

Follow me!

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です