构建一个语音转文字的WebApi服务
简介
由于业务需要,我们需要提供一个语音输入功能,以便更方便用户的使用,所以我们需要提供语音转文本的功能,下面我们将讲解使用Whisper
将语音转换文本,并且封装成WebApi
提供web服务给前端调用。
创建项目
- 第一步打开
Vscode
,选择一个目录作为工作空间,然后打开控制台,输入以下指令创建一个WebApi的项目:
dotnet new webapi -n Whisper --no-openapi=true
- 添加依赖包的引用:
-
Whisper.net
是Whisper.cpp
的.NET封装 -
Whisper.net.Runtime.Clblast
则是使用GPU的包,当然也可以不使用GPU
-
-
下载一个模型: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
PreserveNewest
PreserveNewest
实现基本使用案例
将俩个文件复制到部署目录
创建WhisperService.cs
并且读取音频文件然后返回识别结果
public class WhisperService
{
///
/// 音频转文字
///
/// 注入的对象
///
public static async Task SpeechRecognitionA服务器托管网sync(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} 文件大小:{fileStr服务器托管网eam.Length}");
return str;
}
}
修改Program.cs
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();
// 注册单例的WhisperFactory,并且使用ggml-base-q5_1.bin模型
builder.Services.AddSingleton((services) => WhisperFactory.FromPath("ggml-base-q5_1.bin"));
builder.Services.AddSingleton((services)=>
{
// 从构建的服务中获取WhisperFactory
var whisperFactory = services.GetRequiredService();
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
-
耗时:2275ms
-
显卡:4080
-
耗时:800ms
总结:
在本次会议中,讨论了构建一个语音转文字的WebApi服务的流程和步骤。主要内容包括创建项目、添加依赖包的引用、下载模型和语音示例文件、实现基本使用案例以及服务构建完成后的运行体验。
行动项目:
1. 下载并添加依赖包Whisper.net
和Whisper.net.Runtime.Clblast
。
2. 下载模型ggml-base-q5_1.bin
和语音示例文件kennedy.wav
,并将其复制到部署目录。
3. 创建WhisperService.cs
,实现音频转文字的功能。
4. 修改Program.cs
,注册WhisperFactory
并构建API,使用WhisperService.SpeechRecognitionAsync
方法。
5. 运行服务,测试效果。
分享
技术交流群:737776595
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
机房租用,北京机房租用,IDC机房托管, http://www.fwqtg.net
原文链接:一文吃透 CSS Flex 布局 教学游戏 这里有两个小游戏,可用来练习 flex 布局。 塔防游戏送小青蛙回家 Flexbox 概述 Flexbox 布局也叫 Flex 布局,弹性盒子布局。 它决定了元素如何在页面上排列,使它们能在不同的屏幕尺寸和…