Add Go API for audio tagging (#1840)

This commit is contained in:
Fangjun Kuang
2025-02-11 12:07:28 +08:00
committed by GitHub
parent 73d7c25233
commit f5bf8c8d4a
11 changed files with 180 additions and 2 deletions

View File

@@ -0,0 +1,4 @@
module audio-tagging
go 1.12

View File

@@ -0,0 +1,36 @@
package main
import (
"fmt"
sherpa "github.com/k2-fsa/sherpa-onnx-go/sherpa_onnx"
"log"
)
func main() {
config := sherpa.AudioTaggingConfig{}
config.Model.Zipformer.Model = "./sherpa-onnx-zipformer-small-audio-tagging-2024-04-15/model.int8.onnx"
config.Model.NumThreads = 1
config.Model.Debug = 1
config.Model.Provider = "cpu"
config.Labels = "./sherpa-onnx-zipformer-small-audio-tagging-2024-04-15/class_labels_indices.csv"
config.TopK = 5
tagging := sherpa.NewAudioTagging(&config)
defer sherpa.DeleteAudioTagging(tagging)
wave_filename := "./sherpa-onnx-zipformer-small-audio-tagging-2024-04-15/test_wavs/3.wav"
wave := sherpa.ReadWave(wave_filename)
if wave == nil {
log.Printf("Failed to read %v\n", wave_filename)
return
}
stream := sherpa.NewAudioTaggingStream(tagging)
defer sherpa.DeleteOfflineStream(stream)
stream.AcceptWaveform(wave.SampleRate, wave.Samples)
result := tagging.Compute(stream, 10)
fmt.Printf("the tagging result: %v\n", result)
}

View File

@@ -0,0 +1,13 @@
#!/usr/bin/env bash
if [ ! -f ./sherpa-onnx-zipformer-small-audio-tagging-2024-04-15/model.int8.onnx ]; then
curl -SL -O https://github.com/k2-fsa/sherpa-onnx/releases/download/audio-tagging-models/sherpa-onnx-zipformer-small-audio-tagging-2024-04-15.tar.bz2
tar xvf sherpa-onnx-zipformer-small-audio-tagging-2024-04-15.tar.bz2
rm sherpa-onnx-zipformer-small-audio-tagging-2024-04-15.tar.bz2
fi
go mod tidy
go build
./audio-tagging