书画网站 建设方案,平面广告设计课程总结,以营销导向型建设网站方案,ai免费logo设计一键生成构建一个语音转文字的WebApi服务
简介
由于业务需要#xff0c;我们需要提供一个语音输入功能#xff0c;以便更方便用户的使用#xff0c;所以我们需要提供语音转文本的功能#xff0c;下面我们将讲解使用Whisper将语音转换文本#xff0c;并且封装成WebApi提供web服务…构建一个语音转文字的WebApi服务
简介
由于业务需要我们需要提供一个语音输入功能以便更方便用户的使用所以我们需要提供语音转文本的功能下面我们将讲解使用Whisper将语音转换文本并且封装成WebApi提供web服务给前端调用。
创建项目
第一步打开Vscode选择一个目录作为工作空间然后打开控制台输入以下指令创建一个WebApi的项目
dotnet new webapi -n Whisper --no-openapitrue添加依赖包的引用 Whisper.net是Whisper.cpp的.NET封装Whisper.net.Runtime.Clblast则是使用GPU的包当然也可以不使用GPU
PackageReference IncludeWhisper.net Version1.5.0 /
PackageReference IncludeWhisper.net.Runtime.Clblast Version1.5.0 /下载一个模型https://huggingface.co/ggerganov/whisper.cpp/tree/main 找到ggml-base-q5_1.bin下载请注意的是带en的是只识别英文的。其他的是全语言。 下载一个语音示例文件 https://github.com/sandrohanea/whisper.net/blob/main/examples/TestData/kennedy.wav
ItemGroupNone Updateggml-base-q5_1.binCopyToOutputDirectoryPreserveNewest/CopyToOutputDirectory/NoneNone Updatekennedy.wavCopyToOutputDirectoryPreserveNewest/CopyToOutputDirectory/None/ItemGroup实现基本使用案例
将俩个文件复制到部署目录
创建WhisperService.cs并且读取音频文件然后返回识别结果
public class WhisperService
{/// summary/// 音频转文字/// /summary/// param nameprocessor注入的对象/param/// returns/returnspublic static async Taskstring SpeechRecognitionAsync(WhisperProcessor processor){var sw Stopwatch.StartNew();var wavFileName kennedy.wav;await using var fileStream File.OpenRead(wavFileName);var str string.Empty;await foreach (var result in processor.ProcessAsync(fileStream)){Console.WriteLine(${result.Start}-{result.End}: {result.Text});str result.Text;}sw.Stop();Console.WriteLine($翻译耗时{sw.ElapsedMilliseconds}ms 翻译结果{str} 文件大小{fileStream.Length});return str;}}修改Program.cs
var builder WebApplication.CreateBuilder(args);builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();// 注册单例的WhisperFactory并且使用ggml-base-q5_1.bin模型
builder.Services.AddSingletonWhisperFactory((services) WhisperFactory.FromPath(ggml-base-q5_1.bin));
builder.Services.AddSingleton((services)
{// 从构建的服务中获取WhisperFactoryvar whisperFactory services.GetRequiredServiceWhisperFactory();return whisperFactory.CreateBuilder().WithLanguage(auto) // 自动识别语言.Build();
});var app builder.Build();if (app.Environment.IsDevelopment())
{app.UseSwagger();app.UseSwaggerUI();
}// 使用MiniApis构建一个简单的API使用WhisperService.SpeechRecognitionAsync方法
app.MapGet(/whisper/speech-recognition, WhisperService.SpeechRecognitionAsync).WithName(whisper).WithOpenApi().WithDescription(识别语音文件);await app.RunAsync();服务构建完成下面运行体验效果
在控制台输入
cd .\Whisper\
dotent run显卡1050Ti 耗时3385ms 显卡4080耗时800ms 总结:
在本次会议中讨论了构建一个语音转文字的WebApi服务的流程和步骤。主要内容包括创建项目、添加依赖包的引用、下载模型和语音示例文件、实现基本使用案例以及服务构建完成后的运行体验。
行动项目:
下载并添加依赖包Whisper.net和Whisper.net.Runtime.Clblast。下载模型ggml-base-q5_1.bin和语音示例文件kennedy.wav并将其复制到部署目录。创建WhisperService.cs实现音频转文字的功能。修改Program.cs注册WhisperFactory并构建API使用WhisperService.SpeechRecognitionAsync方法。运行服务测试效果。
分享
技术交流群737776595