手機網(wǎng)站建站教育模板下載國外網(wǎng)站seo免費
我們有一個中文錄音文件.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 文件,如果此網(wǎng)站無法訪問,我已把本文中用到的資源文件放到了CSDN資源中可以在直接進行下載?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)建目標(biāo)音頻格式 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");
好了,以上這么多就是本文的全部內(nèi)容了,如果對你有幫助,創(chuàng)作不易,點個贊吧。
參考網(wǎng)址
【C#使用NAudio錄音,并導(dǎo)出錄音數(shù)據(jù)_c# 錄音-CSDN博客】
【C#語音轉(zhuǎn)文字 - CSDN博客】