構(gòu)建一個語音轉(zhuǎn)文字的WebApi服務(wù)

由于業(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

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容