MCPcopy Create free account
hub / github.com/RunanywhereAI/RCLI / rcli_process_wav

Function rcli_process_wav

src/api/rcli_api.cpp:2356–2401  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

2354// =============================================================================
2355
2356int rcli_process_wav(RCLIHandle handle,
2357 const char* input_wav,
2358 const char* output_wav,
2359 RCLIEventCallback callback,
2360 void* user_data) {
2361 if (!handle || !input_wav || !output_wav) return -1;
2362 auto* engine = static_cast<RCLIEngine*>(handle);
2363 if (!engine->initialized) return -1;
2364
2365 // Set state callback to forward events
2366 engine->pipeline.set_state_callback([callback, user_data](PipelineState /*old_state*/, PipelineState new_state) {
2367 if (!callback) return;
2368 const char* state_str = "unknown";
2369 switch (new_state) {
2370 case PipelineState::IDLE: state_str = "idle"; break;
2371 case PipelineState::LISTENING: state_str = "listening"; break;
2372 case PipelineState::PROCESSING: state_str = "processing"; break;
2373 case PipelineState::SPEAKING: state_str = "speaking"; break;
2374 case PipelineState::INTERRUPTED: state_str = "interrupted"; break;
2375 }
2376 callback("state_change", state_str, user_data);
2377 });
2378
2379 LOG_DEBUG("RCLI", "Processing: %s -> %s", input_wav, output_wav);
2380
2381 bool ok = engine->pipeline.run_file_pipeline(input_wav, output_wav);
2382
2383 // Send timings
2384 if (callback) {
2385 auto& t = engine->pipeline.last_timings();
2386 char buf[512];
2387 snprintf(buf, sizeof(buf),
2388 "{\"stt_ms\":%.1f,\"llm_ttft_ms\":%.1f,\"llm_total_ms\":%.1f,"
2389 "\"tts_first_ms\":%.1f,\"e2e_ms\":%.1f,\"total_ms\":%.1f}",
2390 t.stt_latency_us / 1000.0,
2391 t.llm_first_token_us / 1000.0,
2392 t.llm_total_us / 1000.0,
2393 t.tts_first_sentence_us / 1000.0,
2394 t.e2e_latency_us / 1000.0,
2395 t.total_us / 1000.0);
2396 callback("timings", buf, user_data);
2397 }
2398
2399 engine->pipeline.set_state_callback(nullptr);
2400 return ok ? 0 : -1;
2401}
2402
2403char* rcli_get_timings(RCLIHandle handle) {
2404 if (!handle) return nullptr;

Callers

nothing calls this directly

Calls 2

set_state_callbackMethod · 0.80
run_file_pipelineMethod · 0.80

Tested by

no test coverage detected