由于業(yè)務(wù)需要,我們需要提供一個語音輸入功能,以便更方便用戶的使用,所以我們需要提供語音轉(zhuǎn)文本的功能,下面我們將講解使用Whisper將語音轉(zhuǎn)換文本,并且封裝成WebApi提供web服務(wù)給前端調(diào)用。
創(chuàng)建項目
第一步打開Vscode,選擇一個目錄作為工作空間,然后打開控制臺,輸入以下指令創(chuàng)建一個WebApi的項目:
dotnet new webapi -n Whisper --no-openapi=true
添加依賴包的引用:
Whisper.net是Whisper.cpp的.NET封裝
Whisper.net.Runtime.Clblast則是使用GPU的包,當(dāng)然也可以不使用GPU
PreserveNewestPreserveNewest
實現(xiàn)基本使用案例
將倆個文件復(fù)制到部署目錄
創(chuàng)建WhisperService.cs并且讀取音頻文件然后返回識別結(jié)果
publicclassWhisperService{///<summary>///音頻轉(zhuǎn)文字///</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 翻譯結(jié)果:{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)=>{// 從構(gòu)建的服務(wù)中獲取WhisperFactoryvarwhisperFactory = services.GetRequiredService();returnwhisperFactory.CreateBuilder()? ? ? ? .WithLanguage("auto")// 自動識別語言.Build();});varapp = builder.Build();if(app.Environment.IsDevelopment()){? ? app.UseSwagger();? ? app.UseSwaggerUI();}// 使用MiniApis構(gòu)建一個簡單的API,使用WhisperService.SpeechRecognitionAsync方法app.MapGet("/whisper/speech-recognition", WhisperService.SpeechRecognitionAsync)? ? .WithName("whisper")? ? .WithOpenApi()? ? .WithDescription("識別語音文件");awaitapp.RunAsync();
服務(wù)構(gòu)建完成,下面運(yùn)行體驗效果:
在控制臺輸入:
cd.\Whisper\dotent run
顯卡:1050Ti
耗時:2275ms
顯卡:4080
耗時:800ms
總結(jié):
在本次會議中,討論了構(gòu)建一個語音轉(zhuǎn)文字的WebApi服務(wù)的流程和步驟。主要內(nèi)容包括創(chuàng)建項目、添加依賴包的引用、下載模型和語音示例文件、實現(xiàn)基本使用案例以及服務(wù)構(gòu)建完成后的運(yùn)行體驗。
行動項目:
1. 下載并添加依賴包Whisper.net和Whisper.net.Runtime.Clblast。
2. 下載模型ggml-base-q5_1.bin和語音示例文件kennedy.wav,并將其復(fù)制到部署目錄。
3. 創(chuàng)建WhisperService.cs,實現(xiàn)音頻轉(zhuǎn)文字的功能。
4. 修改Program.cs,注冊WhisperFactory并構(gòu)建API,使用WhisperService.SpeechRecognitionAsync方法。
5. 運(yùn)行服務(wù),測試效果。
散熱風(fēng)扇https://www.uv-semi.com/
深圳網(wǎng)站建設(shè)www.sz886.com