43 lines
1.4 KiB
JavaScript
43 lines
1.4 KiB
JavaScript
// Copyright (c) 2023-2024 Xiaomi Corporation (authors: Fangjun Kuang)
|
|
|
|
const sherpa_onnx = require('sherpa-onnx-node');
|
|
|
|
// Please download whisper multi-lingual models from
|
|
// https://github.com/k2-fsa/sherpa-onnx/releases/tag/asr-models
|
|
function createSpokenLanguageID() {
|
|
const config = {
|
|
whisper: {
|
|
encoder: './sherpa-onnx-whisper-tiny/tiny-encoder.int8.onnx',
|
|
decoder: './sherpa-onnx-whisper-tiny/tiny-decoder.int8.onnx',
|
|
},
|
|
debug: true,
|
|
numThreads: 1,
|
|
provider: 'cpu',
|
|
};
|
|
return new sherpa_onnx.SpokenLanguageIdentification(config);
|
|
}
|
|
|
|
const slid = createSpokenLanguageID();
|
|
|
|
const testWaves = [
|
|
'./spoken-language-identification-test-wavs/ar-arabic.wav',
|
|
'./spoken-language-identification-test-wavs/de-german.wav',
|
|
'./spoken-language-identification-test-wavs/en-english.wav',
|
|
'./spoken-language-identification-test-wavs/fr-french.wav',
|
|
'./spoken-language-identification-test-wavs/pt-portuguese.wav',
|
|
'./spoken-language-identification-test-wavs/es-spanish.wav',
|
|
'./spoken-language-identification-test-wavs/zh-chinese.wav',
|
|
];
|
|
|
|
const display = new Intl.DisplayNames(['en'], {type: 'language'})
|
|
|
|
for (let f of testWaves) {
|
|
const stream = slid.createStream();
|
|
|
|
const wave = sherpa_onnx.readWave(f);
|
|
stream.acceptWaveform({sampleRate: wave.sampleRate, samples: wave.samples});
|
|
|
|
const lang = slid.compute(stream);
|
|
console.log(f.split('/')[2], lang, display.of(lang));
|
|
}
|