46 lines
1.3 KiB
C#
46 lines
1.3 KiB
C#
// Copyright (c) 2025 Xiaomi Corporation
|
|
//
|
|
// This file shows how to use speech enhancement API with GTCRN models.
|
|
//
|
|
// 1. Download a model from
|
|
// https://github.com/k2-fsa/sherpa-onnx/releases/tag/speech-enhancement-models
|
|
//
|
|
// wget https://github.com/k2-fsa/sherpa-onnx/releases/download/speech-enhancement-models/gtcrn_simple.onnx
|
|
//
|
|
// 2. Download a test file
|
|
//
|
|
// wget https://github.com/k2-fsa/sherpa-onnx/releases/download/speech-enhancement-models/inp_16k.wav
|
|
//
|
|
// 3. Now run it
|
|
//
|
|
// dotnet run
|
|
|
|
using SherpaOnnx;
|
|
|
|
class OfflineSpeechEnhancementDemo
|
|
{
|
|
static void Main(string[] args)
|
|
{
|
|
var config = new OfflineSpeechDenoiserConfig();
|
|
config.Model.Gtcrn.Model = "./gtcrn_simple.onnx";
|
|
config.Model.Debug = 1;
|
|
config.Model.NumThreads = 1;
|
|
var sd = new OfflineSpeechDenoiser(config);
|
|
|
|
WaveReader waveReader = new WaveReader("./inp_16k.wav");
|
|
var denoisedAudio = sd.Run(waveReader.Samples, waveReader.SampleRate);
|
|
|
|
var outputFilename = "./enhanced-16k.wav";
|
|
var ok = denoisedAudio.SaveToWaveFile(outputFilename);
|
|
|
|
if (ok)
|
|
{
|
|
Console.WriteLine($"Wrote to {outputFilename} succeeded!");
|
|
}
|
|
else
|
|
{
|
|
Console.WriteLine($"Failed to write {outputFilename}");
|
|
}
|
|
}
|
|
}
|