diff --git a/src/main.cpp b/src/main.cpp index 2f5e88e..88cb135 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -333,6 +333,18 @@ size_t curl_write(char* buffer, size_t size, size_t nmemb, void* data) { return size * nmemb; } +std::string clean_transcript(std::string transcript) { + // Qwen3-ASR prefixes transcripts with the detected language and this marker. + constexpr const char* kLanguagePrefix = "language "; + constexpr const char* kTextMarker = ""; + if (transcript.compare(0, std::strlen(kLanguagePrefix), kLanguagePrefix) != 0) { + return transcript; + } + const size_t marker = transcript.find(kTextMarker, std::strlen(kLanguagePrefix)); + if (marker == std::string::npos) return transcript; + return transcript.substr(marker + std::strlen(kTextMarker)); +} + bool transcription_request(const std::string& url, const std::string& key, const std::string& model, const std::string& path, const std::string& prompt, @@ -402,7 +414,7 @@ bool transcription_request(const std::string& url, const std::string& key, g_object_unref(parser); return false; } - *transcript = json_object_get_string_member(object, "text"); + *transcript = clean_transcript(json_object_get_string_member(object, "text")); g_object_unref(parser); return true; }