Transcripts - Sanas Developer Hub
Documentation Index
Fetch the complete documentation index at: /llms.txt
Use this file to discover all available pages before exploring further.
For Language Translation, the SDK always delivers two parallel streams of transcript events — one for the source language (what was spoken) and one for the target language (the translation). Both arrive as JSON strings through your TranscriptCallback.
Registering the callback
auto onTranscript = {
// parse and handle the JSON event (see schema below)
};
// Pass as the 4th argument to CreateAudioProcessor
auto p = sdk->CreateAudioProcessor(params, rc, onState, onTranscript);
Event types
type field |
Contents |
|---|---|
"transcription" |
Speech recognised in the source language. |
"translation" |
Text translated into the target language. |
JSON schema
{
"type": "transcription",
"transcription": {
"lang": "en-US",
"complete": [
{ "word": " hello", "start": 0.10, "end": 0.42, "probability": 0.99 }
],
"partial": [
{ "word": " world", "start": 0.42, "end": 0.70, "probability": 0.88 }
],
"utterance_idx": 0
}
}
| Field | Type | Description |
|---|---|---|
type |
string | "transcription" or "translation" |
lang |
string | BCP-47 language code for this event. |
complete |
array | Finalised words — will not change. |
partial |
array | In-progress words — may be revised in the next event. |
word |
string | Word text with a leading space. Concatenate to rebuild sentences. |
start / end |
float | Timing offsets in seconds from the start of the utterance. |
probability |
float (0–1) | Recognition confidence. Words below ~0.7 are lower-confidence. |
utterance_idx |
integer | Monotonically increasing counter that groups words into utterances. |
Example: print finalised text
auto onTranscript = {
try {
auto root = nlohmann::json::parse(jsonData);
std::string type = root.value("type", "");
if (!root.contains(type)) return;
const auto& body = root[type];
std::string text;
for (const auto& w : body.value("complete", nlohmann::json::array()))
text += w.value("word", "");
if (!text.empty())
std::cout << "["\
<< (type == "translation" ? "TARGET" : "SOURCE")\
<< " " << body.value("lang", "") << "] " << text << "\n";
} catch (const std::exception& e) {
std::cerr << "parse error: " << e.what() << "\n";
}
};
JSON library. nlohmann/json is used in examples for brevity. Any JSON library works. Always wrap parsing in try/catch.