Whisper.NET开源项目:https://github.com/sandrohanea/whisper.net/tree/main
一. 环境准备
在VS中安装 Whisper.net,在NuGet包管理器控制台中运行以下命令:
Install-Package Whisper.net
Install-Package Whisper.net.Runtime
其中运行时包 Whisper.net.Runtime 包含本机whisper.cpp库,它是运行 Whisper.net 所必需的。
在huggingface下载预训练的Ggml模型。
中等模型及以上效果较好,模型越大越消耗性能
二. 项目示例
准备一段wav格式的音频,运行下面示例
using System;
using System.IO;
using Whisper.net;namespace ConsoleWhisperTranscription
{class Program{static async Task Main(string[] args){// 检查命令行参数中是否包含音频文件路径if (args.Length == 0){Console.WriteLine("Please provide the path to the audio file.");return;}string audioFilePath = args[0]; // 从命令行参数获取音频文件路径// 确保文件存在if (!File.Exists(audioFilePath)){Console.WriteLine("The audio file does not exist.");return;}// 初始化Whisper工厂和处理器var whisperFactory = WhisperFactory.FromPath("C:\\Users\\26366\\source\\repos\\whisperDemo\\whisperDemo\\ggml-medium.bin");var processor = whisperFactory.CreateBuilder().WithLanguage("zh") // 设置识别的语言为中文.Build();try{// 读取音频文件using var audioStream = File.OpenRead(audioFilePath);// 处理音频文件并输出结果Console.WriteLine("Transcribing audio file...");await foreach (var result in processor.ProcessAsync(audioStream, default)){Console.WriteLine($"{result.Start}->{result.End}: {result.Text}");}}catch (Exception ex){Console.WriteLine($"An error occurred: {ex.Message}");}}}
}
效果如下: