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

Function rcli_init

src/api/rcli_api.cpp:214–669  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

212}
213
214int rcli_init(RCLIHandle handle, const char* models_dir, int gpu_layers) {
215 if (!handle || !models_dir) return -1;
216 auto* engine = static_cast<RCLIEngine*>(handle);
217
218 std::string dir(models_dir);
219 engine->models_dir = dir;
220
221 PipelineConfig config;
222
223 // --- STT (Zipformer streaming — always active for live mic) ---
224 config.stt.encoder_path = dir + "/zipformer/encoder-epoch-99-avg-1.int8.onnx";
225 config.stt.decoder_path = dir + "/zipformer/decoder-epoch-99-avg-1.int8.onnx";
226 config.stt.joiner_path = dir + "/zipformer/joiner-epoch-99-avg-1.int8.onnx";
227 config.stt.tokens_path = dir + "/zipformer/tokens.txt";
228 config.stt.sample_rate = 16000;
229 config.stt.num_threads = 2;
230
231 // --- Offline STT (resolve: user preference > auto-detect highest priority) ---
232 {
233 auto stt_models = rcli::all_stt_models();
234 const auto* active_stt = rcli::resolve_active_stt(dir, stt_models);
235 if (!active_stt) active_stt = rcli::get_default_offline_stt(stt_models);
236
237 if (active_stt && active_stt->backend == "nemo_transducer") {
238 std::string base = dir + "/" + active_stt->dir_name;
239 config.offline_stt.backend = OfflineSttBackend::NEMO_TRANSDUCER;
240 config.offline_stt.transducer_encoder_path = base + "/" + active_stt->encoder_file;
241 config.offline_stt.transducer_decoder_path = base + "/" + active_stt->decoder_file;
242 config.offline_stt.transducer_joiner_path = base + "/" + active_stt->joiner_file;
243 config.offline_stt.tokens_path = base + "/" + active_stt->tokens_file;
244 config.offline_stt.sample_rate = 16000;
245 config.offline_stt.num_threads = 4;
246 engine->using_parakeet = true;
247 engine->stt_model_name = active_stt->name;
248 LOG_DEBUG("RCLI", "Using %s for offline STT", active_stt->name.c_str());
249 } else if (active_stt) {
250 std::string base = dir + "/" + active_stt->dir_name;
251 config.offline_stt.backend = OfflineSttBackend::WHISPER;
252 config.offline_stt.encoder_path = base + "/" + active_stt->encoder_file;
253 config.offline_stt.decoder_path = base + "/" + active_stt->decoder_file;
254 config.offline_stt.tokens_path = base + "/" + active_stt->tokens_file;
255 config.offline_stt.language = "en";
256 config.offline_stt.task = "transcribe";
257 config.offline_stt.tail_paddings = 500;
258 config.offline_stt.sample_rate = 16000;
259 config.offline_stt.num_threads = 4;
260 engine->using_parakeet = false;
261 engine->stt_model_name = active_stt->name;
262 LOG_DEBUG("RCLI", "Using %s for offline STT", active_stt->name.c_str());
263 } else {
264 config.offline_stt.backend = OfflineSttBackend::WHISPER;
265 config.offline_stt.encoder_path = dir + "/whisper-base.en/base.en-encoder.int8.onnx";
266 config.offline_stt.decoder_path = dir + "/whisper-base.en/base.en-decoder.int8.onnx";
267 config.offline_stt.tokens_path = dir + "/whisper-base.en/base.en-tokens.txt";
268 config.offline_stt.language = "en";
269 config.offline_stt.task = "transcribe";
270 config.offline_stt.tail_paddings = 500;
271 config.offline_stt.sample_rate = 16000;

Callers 15

create_and_init_engineFunction · 0.85
cmd_interactiveFunction · 0.85
cmd_listenFunction · 0.85
cmd_mic_testFunction · 0.85
cmd_askFunction · 0.85
cmd_cameraFunction · 0.85
cmd_screenFunction · 0.85
cmd_ragFunction · 0.85
mainFunction · 0.85
test_apiFunction · 0.85
test_use_casesFunction · 0.85
test_actions_api_e2eFunction · 0.85

Calls 15

all_stt_modelsFunction · 0.85
resolve_active_sttFunction · 0.85
get_default_offline_sttFunction · 0.85
all_modelsFunction · 0.85
resolve_active_modelFunction · 0.85
get_default_modelFunction · 0.85
all_tts_modelsFunction · 0.85
resolve_active_ttsFunction · 0.85
get_default_ttsFunction · 0.85
apply_personalityFunction · 0.85
read_engine_preferenceFunction · 0.85

Tested by 6

test_apiFunction · 0.68
test_use_casesFunction · 0.68
test_actions_api_e2eFunction · 0.68
test_personality_apiFunction · 0.68
test_voice_benchFunction · 0.68
test_auto_compactFunction · 0.68