构建一个语音转文字的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



PreserveNewestPreserveNewest

实现基本使用案例

将俩个文件复制到部署目录

创建WhisperService.cs并且读取音频文件然后返回识别结果

publicclassWhisperService{///<summary>///音频转文字///</summary>///<param name="processor">注入的对象</param>///<returns></returns>publicstaticasyncTaskSpeechRecognitionAsync(WhisperProcessor processor){varsw = Stopwatch.StartNew();varwavFileName ="kennedy.wav";awaitusingvarfileStream = File.OpenRead(wavFileName);varstr =string.Empty;awaitforeach(varresultinprocessor.ProcessAsync(fileStream))        {            Console.WriteLine($"{result.Start}->{result.End}:{result.Text}");            str += result.Text;        }        sw.Stop();        Console.WriteLine($"翻译耗时:{sw.ElapsedMilliseconds}ms 翻译结果:{str}文件大小:{fileStream.Length}");returnstr;    }}

修改Program.cs

varbuilder = 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)=>{// 从构建的服务中获取WhisperFactoryvarwhisperFactory = services.GetRequiredService();returnwhisperFactory.CreateBuilder()        .WithLanguage("auto")// 自动识别语言.Build();});varapp = 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("识别语音文件");awaitapp.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. 运行服务,测试效果。

散热风扇https://www.uv-semi.com/

深圳网站建设www.sz886.com

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容