Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions model_specs/qwen3_asr.json
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,13 @@
"description": "Opt-in guard for word timestamp output: keep repaired forced-aligner word spans inside the local audio chunk. Defaults to false to preserve existing timestamp repair behavior.",
"required": false,
"default": false
},
{
"name": "qwen3_asr.preserve_punctuation",
"type": "bool",
"description": "Opt-in text output mode for timestamped chunked ASR: preserve ASR punctuation in text_output instead of rebuilding text from aligned words.",
"required": false,
"default": false
}
]
},
Expand Down
12 changes: 11 additions & 1 deletion src/models/qwen3_asr/session.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,15 @@ bool request_clamp_timestamps_to_audio(const runtime::TaskRequest & request) {
return false;
}

bool request_preserve_punctuation(const runtime::TaskRequest & request) {
if (const auto value = runtime::find_option(
request.options,
{"qwen3_asr.preserve_punctuation", "preserve_punctuation"})) {
return runtime::parse_bool_option(*value, "qwen3_asr.preserve_punctuation");
}
return false;
}

void log_chunk_word_diagnostics(
int64_t chunk_index,
int64_t chunk_count,
Expand Down Expand Up @@ -345,7 +354,8 @@ runtime::TaskResult Qwen3ASRSession::run(const runtime::TaskRequest & request) {
assets_->config.sample_rate);
}
if (merged.text_output.has_value()) {
if (request_return_timestamps(request) && !merged.word_timestamps.empty()) {
if (request_return_timestamps(request) && !merged.word_timestamps.empty() &&
!request_preserve_punctuation(request)) {
std::ostringstream word_text;
for (const auto & word : merged.word_timestamps) {
if (word_text.tellp() > 0) {
Expand Down
Loading