C#實現(xiàn)中文錄音文件轉(zhuǎn)為文本文字
我們有一個中文錄音文件.mp3格式或者是.wav格式,如果我們想要提取錄音文件中的文字內(nèi)容,我們可以采用以下方法,不需要使用Azure Speech API 密鑰注冊通過離線的方式實現(xiàn)。
1.首先我們先在NuGet中下載兩個包 NAudio 2.2.1、Whisper.net 1.7.3
2.另外我們還需要從Hugging Face網(wǎng)址中下載一個 ggml-medium.bin 文件
3. 代碼部分,由于我們Whisper模型只支持16KHz的語音文件
所以我們要把不同音頻格式的文件統(tǒng)一轉(zhuǎn)為16000Hz的音頻數(shù)據(jù)文件,如下是具體代碼:
using NAudio.Wave; using System; public class AudioResampler { public static void ConvertTo16kHz(string inputFile, string outputFile) { // 打開原始音頻文件 using (var reader = new WaveFileReader(inputFile)) { // 創(chuàng)建目標音頻格式 16kHz,單聲道,16位 var targetFormat = new WaveFormat(16000, 1); // 16000Hz, Mono, 16-bit // 創(chuàng)建轉(zhuǎn)換流,使用 WaveFormatConversionStream 進行重采樣 using (var conversionStream = new WaveFormatConversionStream(targetFormat, reader)) { // 將轉(zhuǎn)換后的音頻數(shù)據(jù)寫入新文件 WaveFileWriter.CreateWaveFile(outputFile, conversionStream); Console.WriteLine("文件已轉(zhuǎn)換為 16kHz 格式"); } } } } // 使用示例 class Program { static void Main(string[] args) { string inputFile = @"path_to_input_file.wav"; // 輸入文件路徑 string outputFile = @"path_to_output_file_16kHz.wav"; // 輸出文件路徑 AudioResampler.ConvertTo16kHz(inputFile, outputFile); } }
4.接下來是詳細的具體代碼
public async Task Analyze() { //模型 string modelFilePath = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "ggml-medium-q8_0.bin"); // 初始化Whisper工廠和處理器 var whisperFactory = WhisperFactory.FromPath(modelFilePath); var processor = whisperFactory.CreateBuilder() .WithLanguage("zh") // 設(shè)置識別的語言為中文 .Build(); try { string audioFileName = "path_to_output_file_16kHz.wav"; string audioFilePath = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, audioFileName); // 讀取音頻文件 using var audioStream = File.OpenRead(audioFilePath); // 處理音頻文件并輸出結(jié)果 Console.WriteLine("Transcribing audio file..."); await foreach (SegmentData result in processor.ProcessAsync(audioStream, default)) { Console.WriteLine($"{result.Start}->{result.End}: {result.Text}"); } } catch (Exception ex) { Console.WriteLine($"An error occurred: {ex.Message}"); } Console.WriteLine("Press any key to exit..."); }
其中需要注意的是 ggml-medium-q8_0.bin文件的絕對路徑,此文件的獲取方式上述已說明。
string modelFilePath = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "ggml-medium-q8_0.bin");
到此這篇關(guān)于C#實現(xiàn)中文錄音文件轉(zhuǎn)為文本文字的文章就介紹到這了,更多相關(guān)C#錄音轉(zhuǎn)文本內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
c#關(guān)于JWT跨域身份驗證的實現(xiàn)代碼
這篇文章主要介紹了c#關(guān)于JWT跨域身份驗證的實現(xiàn)代碼,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-10-10C#數(shù)據(jù)結(jié)構(gòu)與算法揭秘三 鏈表
這節(jié)我們討論鏈表的基本操作,并且畫圖以證明,下屆中我們將討論雙向鏈表,環(huán)形鏈表 應(yīng)用舉例2012-11-11C#控件編程之顯示信息控件詳解(Label、LinkLabel)
這篇文章主要介紹了C#控件編程之顯示信息控件詳解(Label、LinkLabel),具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2025-04-04.NET使用C#實現(xiàn)將Word文檔轉(zhuǎn)換為HTML格式
這篇文章主要為大家詳細介紹了如何在.NET平臺使用C#將Word文檔轉(zhuǎn)換為HTML文件,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2025-01-01