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

Method Vevo2Session

src/models/vevo2/session.cpp:726–815  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

724 const auto text_chunk_size_override = engine::text::parse_text_chunk_size_override(request.options);
725 auto vevo2_request = make_request(request);
726 std::vector<Vevo2Request> chunk_requests;
727 if (vevo2_request.path == Vevo2InferencePath::TextProsodyToTargetVoice) {
728 const int64_t text_chunk_size = text_chunk_size_override.value_or(kDefaultTextChunkSize);
729 const auto text_chunks = engine::text::split_text_chunks(
730 vevo2_request.refs.target_text,
731 text_chunk_size);
732 engine::debug::trace_log_scalar("vevo2.text_chunk_size", text_chunk_size);
733 engine::debug::trace_log_scalar("vevo2.text_chunk_count", static_cast<int64_t>(text_chunks.empty() ? 1 : text_chunks.size()));
734 chunk_requests.reserve(text_chunks.empty() ? 1 : text_chunks.size());
735 if (text_chunks.empty()) {
736 chunk_requests.push_back(std::move(vevo2_request));
737 } else {
738 const bool split_across_chunks = text_chunks.size() > 1;
739 for (const auto & text_chunk : text_chunks) {
740 Vevo2Request chunk_request = vevo2_request;
741 chunk_request.refs.target_text = text_chunk;
742 if (split_across_chunks && chunk_request.route == Vevo2RouteKind::ZeroShotTts) {
743 chunk_request.refs.style_ref_text.clear();
744 }
745 chunk_requests.push_back(std::move(chunk_request));
746 }
747 }
748 } else {
749 chunk_requests.push_back(std::move(vevo2_request));
750 }
751
752 runtime::TaskResult result;
753 runtime::AudioBuffer merged_audio;
754 bool have_audio_output = false;
755 Vevo2TokenSequence cached_prosody_tokens;
756 bool have_cached_prosody_tokens = false;
757
758 for (const auto & chunk_request : chunk_requests) {
759 Vevo2TokenSequence prosody_tokens;
760 Vevo2TokenSequence style_content_tokens;
761 Vevo2TokenSequence generated_tokens;
762 Vevo2PromptParts prompt;
763
764 if (chunk_request.path == Vevo2InferencePath::TextProsodyToTargetVoice) {
765 if (chunk_request.generation.use_prosody_code) {
766 if (!have_cached_prosody_tokens) {
767 const auto start = Clock::now();
768 cached_prosody_tokens = prosody_tokenizer_.encode(
769 *chunk_request.refs.prosody_audio,
770 chunk_request.refs.style_ref_audio,
771 chunk_request.generation);
772 prosody_tokenizer_ms += engine::debug::elapsed_ms(start);
773 have_cached_prosody_tokens = true;
774 }
775 prosody_tokens = cached_prosody_tokens;
776 }
777 std::optional<std::vector<float>> style_whisper_features;
778 int64_t style_frames = 0;
779 if (chunk_request.refs.style_ref_audio.has_value()) {
780 style_frames = frame_count_24k(*chunk_request.refs.style_ref_audio);
781 const auto start = Clock::now();
782 style_whisper_features = cached_whisper_features(*chunk_request.refs.style_ref_audio, style_frames, 0);
783 style_whisper_ms += engine::debug::elapsed_ms(start);

Callers

nothing calls this directly

Calls 5

parse_size_mb_optionFunction · 0.85
resolve_conv_weight_typeFunction · 0.85
reject_unknown_optionsFunction · 0.85
require_assetsFunction · 0.70

Tested by

no test coverage detected