MCPcopy Create free account
hub / github.com/0xShug0/audio.cpp / run

Method run

src/models/omnivoice/session.cpp:274–478  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

272 session_defaults_.text = request.text;
273 }
274 if (request.voice.has_value() && request.voice->speaker.has_value() && request.voice->speaker->audio.has_value()) {
275 session_defaults_.reference_audio = *request.voice->speaker->audio;
276 }
277 session_defaults_.options = request.options;
278 if (const auto reference_text = request_option(request.options, "reference_text"); reference_text.has_value()) {
279 session_defaults_.reference_text = std::move(reference_text);
280 }
281 if (const auto instruct = request_option(request.options, "instruct"); instruct.has_value()) {
282 session_defaults_.instruct = std::move(instruct);
283 } else if (request.voice.has_value() && request.voice->style.has_value()) {
284 const auto it = request.voice->style->tags.find("instruct");
285 if (it != request.voice->style->tags.end()) {
286 session_defaults_.instruct = it->second;
287 }
288 }
289 if (session_defaults_.reference_audio.has_value()) {
290 const auto merged_options = session_defaults_.options;
291 const auto generation = generation_options_from_options(merged_options);
292 const bool reference_text_provided =
293 session_defaults_.reference_text.has_value() && !session_defaults_.reference_text->empty();
294 (void) resolve_reference_audio_tokens(
295 *session_defaults_.reference_audio,
296 generation.preprocess_prompt,
297 reference_text_provided);
298 if (mem_saver_) {
299 audio_tokenizer_.release_runtime_graphs();
300 }
301 }
302 mark_prepared();
303}
304
305runtime::TaskResult OmniVoiceSession::run(const runtime::TaskRequest & request) {
306 require_prepared("OmniVoice run()");
307 if (task_.mode != runtime::RunMode::Offline) {
308 throw std::runtime_error("OmniVoice run() requires an offline session");
309 }
310 const auto wall_start = Clock::now();
311 auto omni_request = make_request(request);
312 if (omni_request.generation.seed.has_value()) {
313 generator_.seed_rng(*omni_request.generation.seed);
314 }
315 runtime::TaskResult task_result;
316 std::optional<double> reference_encode_ms = std::nullopt;
317 bool encoder_graph_rebuilt = false;
318 if (omni_request.reference_audio.has_value()) {
319 const auto encode_start = Clock::now();
320 const auto reference_tokens = resolve_reference_audio_tokens(
321 *omni_request.reference_audio,
322 omni_request.generation.preprocess_prompt,
323 !omni_request.reference_text.empty());
324 const auto encode_end = Clock::now();
325 omni_request.reference_rms = reference_tokens.reference_rms;
326 omni_request.reference_audio_tokens = std::move(reference_tokens);
327 omni_request.reference_audio.reset();
328 reference_encode_ms = engine::debug::elapsed_ms(encode_start, encode_end);
329 const auto & tokenizer_stats = audio_tokenizer_.last_stats();
330 encoder_graph_rebuilt = tokenizer_stats.encoder_graph_rebuilt;
331 if (mem_saver_) {

Callers

nothing calls this directly

Calls 15

split_text_chunksFunction · 0.85
append_cross_faded_chunkFunction · 0.85
seed_rngMethod · 0.80
frame_rateMethod · 0.80
decode_audio_tokensMethod · 0.80
make_requestFunction · 0.50
elapsed_msFunction · 0.50
timing_log_scalarFunction · 0.50
emptyMethod · 0.45
resetMethod · 0.45

Tested by

no test coverage detected