Skip to content

Commit 2d97df2

Browse files
authored
Add tail_paddings to Whisper C API. (k2-fsa#886)
1 parent 7944737 commit 2d97df2

13 files changed

+29
-9
lines changed

CMakeLists.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
cmake_minimum_required(VERSION 3.13 FATAL_ERROR)
22
project(sherpa-onnx)
33

4-
set(SHERPA_ONNX_VERSION "1.9.24")
4+
set(SHERPA_ONNX_VERSION "1.9.25")
55

66
# Disable warning about
77
#

nodejs-examples/test-offline-nemo-ctc.js

+1
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ function createOfflineRecognizer() {
2929
decoder: '',
3030
language: '',
3131
task: '',
32+
tailPaddings: -1,
3233
},
3334
tdnn: {
3435
model: '',

nodejs-examples/test-offline-paraformer.js

+1
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ function createOfflineRecognizer() {
2929
decoder: '',
3030
language: '',
3131
task: '',
32+
tailPaddings: -1,
3233
},
3334
tdnn: {
3435
model: '',

nodejs-examples/test-offline-transducer.js

+1
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ function createOfflineRecognizer() {
3232
decoder: '',
3333
language: '',
3434
task: '',
35+
tailPaddings: -1,
3536
},
3637
tdnn: {
3738
model: '',

nodejs-examples/test-offline-whisper.js

+1
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ function createOfflineRecognizer() {
2929
decoder: './sherpa-onnx-whisper-tiny.en/tiny.en-decoder.int8.onnx',
3030
language: '',
3131
task: 'transcribe',
32+
tailPaddings: -1,
3233
},
3334
tdnn: {
3435
model: '',

scripts/dotnet/offline.cs

+3
Original file line numberDiff line numberDiff line change
@@ -301,6 +301,7 @@ public OfflineWhisperModelConfig()
301301
Decoder = "";
302302
Language = "";
303303
Task = "transcribe";
304+
TailPaddings = -1;
304305
}
305306
[MarshalAs(UnmanagedType.LPStr)]
306307
public string Encoder;
@@ -313,6 +314,8 @@ public OfflineWhisperModelConfig()
313314

314315
[MarshalAs(UnmanagedType.LPStr)]
315316
public string Task;
317+
318+
public int TailPaddings;
316319
}
317320

318321
[StructLayout(LayoutKind.Sequential)]

scripts/go/sherpa_onnx.go

+7-4
Original file line numberDiff line numberDiff line change
@@ -336,10 +336,11 @@ type OfflineNemoEncDecCtcModelConfig struct {
336336
}
337337

338338
type OfflineWhisperModelConfig struct {
339-
Encoder string
340-
Decoder string
341-
Language string
342-
Task string
339+
Encoder string
340+
Decoder string
341+
Language string
342+
Task string
343+
TailPaddings int
343344
}
344345

345346
type OfflineTdnnModelConfig struct {
@@ -441,6 +442,8 @@ func NewOfflineRecognizer(config *OfflineRecognizerConfig) *OfflineRecognizer {
441442
c.model_config.whisper.task = C.CString(config.ModelConfig.Whisper.Task)
442443
defer C.free(unsafe.Pointer(c.model_config.whisper.task))
443444

445+
c.model_config.whisper.tail_paddings = C.int(config.ModelConfig.Whisper.TailPaddings)
446+
444447
c.model_config.tdnn.model = C.CString(config.ModelConfig.Tdnn.Model)
445448
defer C.free(unsafe.Pointer(c.model_config.tdnn.model))
446449

scripts/node-addon-api/src/non-streaming-asr.cc

+2-1
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,8 @@ static SherpaOnnxOfflineWhisperModelConfig GetOfflineWhisperModelConfig(
7474
SHERPA_ONNX_ASSIGN_ATTR_STR(encoder, encoder);
7575
SHERPA_ONNX_ASSIGN_ATTR_STR(decoder, decoder);
7676
SHERPA_ONNX_ASSIGN_ATTR_STR(language, language);
77-
SHERPA_ONNX_ASSIGN_ATTR_STR(task, languagek);
77+
SHERPA_ONNX_ASSIGN_ATTR_STR(task, task);
78+
SHERPA_ONNX_ASSIGN_ATTR_INT32(tail_paddings, tailPaddings);
7879

7980
return c;
8081
}

sherpa-onnx/c-api/c-api.cc

+3
Original file line numberDiff line numberDiff line change
@@ -341,6 +341,9 @@ SherpaOnnxOfflineRecognizer *CreateOfflineRecognizer(
341341
recognizer_config.model_config.whisper.task = "transcribe";
342342
}
343343

344+
recognizer_config.model_config.whisper.tail_paddings =
345+
SHERPA_ONNX_OR(config->model_config.whisper.tail_paddings, -1);
346+
344347
recognizer_config.model_config.tdnn.model =
345348
SHERPA_ONNX_OR(config->model_config.tdnn.model, "");
346349

sherpa-onnx/c-api/c-api.h

+1
Original file line numberDiff line numberDiff line change
@@ -359,6 +359,7 @@ SHERPA_ONNX_API typedef struct SherpaOnnxOfflineWhisperModelConfig {
359359
const char *decoder;
360360
const char *language;
361361
const char *task;
362+
int32_t tail_paddings;
362363
} SherpaOnnxOfflineWhisperModelConfig;
363364

364365
SHERPA_ONNX_API typedef struct SherpaOnnxOfflineTdnnModelConfig {

swift-api-examples/SherpaOnnx.swift

+4-2
Original file line numberDiff line numberDiff line change
@@ -314,13 +314,15 @@ func sherpaOnnxOfflineWhisperModelConfig(
314314
encoder: String = "",
315315
decoder: String = "",
316316
language: String = "",
317-
task: String = "transcribe"
317+
task: String = "transcribe",
318+
tailPaddings: Int = -1
318319
) -> SherpaOnnxOfflineWhisperModelConfig {
319320
return SherpaOnnxOfflineWhisperModelConfig(
320321
encoder: toCPointer(encoder),
321322
decoder: toCPointer(decoder),
322323
language: toCPointer(language),
323-
task: toCPointer(task)
324+
task: toCPointer(task),
325+
tail_paddings: Int32(tailPaddings)
324326
)
325327
}
326328

wasm/asr/sherpa-onnx-asr.js

+2
Original file line numberDiff line numberDiff line change
@@ -453,6 +453,8 @@ function initSherpaOnnxOfflineWhisperModelConfig(config, Module) {
453453
Module.setValue(ptr + 12, buffer + offset, 'i8*');
454454
offset += taskLen;
455455

456+
Module.setValue(ptr + 16, config.tailPaddings || -1, 'i32');
457+
456458
return {
457459
buffer: buffer, ptr: ptr, len: len,
458460
}

wasm/nodejs/sherpa-onnx-wasm-nodejs.cc

+2-1
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ static_assert(sizeof(SherpaOnnxOfflineTransducerModelConfig) == 3 * 4, "");
1414
static_assert(sizeof(SherpaOnnxOfflineParaformerModelConfig) == 4, "");
1515

1616
static_assert(sizeof(SherpaOnnxOfflineNemoEncDecCtcModelConfig) == 4, "");
17-
static_assert(sizeof(SherpaOnnxOfflineWhisperModelConfig) == 4 * 4, "");
17+
static_assert(sizeof(SherpaOnnxOfflineWhisperModelConfig) == 5 * 4, "");
1818
static_assert(sizeof(SherpaOnnxOfflineTdnnModelConfig) == 4, "");
1919
static_assert(sizeof(SherpaOnnxOfflineLMConfig) == 2 * 4, "");
2020

@@ -80,6 +80,7 @@ void PrintOfflineRecognizerConfig(SherpaOnnxOfflineRecognizerConfig *config) {
8080
fprintf(stdout, "decoder: %s\n", whisper->decoder);
8181
fprintf(stdout, "language: %s\n", whisper->language);
8282
fprintf(stdout, "task: %s\n", whisper->task);
83+
fprintf(stdout, "tail_paddings: %d\n", whisper->tail_paddings);
8384

8485
fprintf(stdout, "----------offline tdnn model config----------\n");
8586
fprintf(stdout, "model: %s\n", tdnn->model);

0 commit comments

Comments
 (0)