| 776 | generation_request.voice = prepared_session_request_.voice; |
| 777 | const GenerationResult generated = generate(generation_request); |
| 778 | runtime::TaskResult result; |
| 779 | result.audio_output = runtime::AudioBuffer{ |
| 780 | generated.sample_rate, |
| 781 | 1, |
| 782 | generated.audio, |
| 783 | }; |
| 784 | return result; |
| 785 | } |
| 786 | |
| 787 | void PocketTTSSession::prepare_generation(const GenerationRequest & request) { |
| 788 | if (!manifest_) { |
| 789 | throw std::runtime_error("PocketTTS session is missing model assets"); |
| 790 | } |
| 791 | const auto voice_plan = resolve_voice_conditioning_plan(model_dir_, request); |
| 792 | const FlowLMState voice_state = resolve_prepared_voice_state(voice_plan); |
| 793 | if (request.text.empty()) { |
| 794 | return; |
| 795 | } |
| 796 | const auto & manifest = *manifest_; |
| 797 | const int64_t text_chunk_size = request.text_chunk_size.value_or(kDefaultTextChunkSize); |
| 798 | const auto chunks = engine::text::split_text_chunks(request.text, text_chunk_size); |
| 799 | for (const auto & chunk : chunks) { |
| 800 | const TextConditioningResult text_state = text_conditioner_.prepare(manifest, weights_->host, chunk); |
| 801 | const AcousticGenerationConfig acoustic_config = resolve_acoustic_generation_config( |
| 802 | manifest, |
| 803 | text_state, |
| 804 | request, |
| 805 | acoustic_model_.config().latent_size); |
| 806 | const int64_t prompt_steps = static_cast<int64_t>( |
| 807 | text_state.text_embeddings.size() / static_cast<size_t>(acoustic_model_.config().hidden_size)); |
| 808 | const AcousticCapacitySelection capacities = select_acoustic_capacities(prompt_steps, acoustic_config.max_steps); |
| 809 | (void) acoustic_model_.prepare_runtime( |
| 810 | execution_context().backend(), |
| 811 | options().backend.threads, |
| 812 | manifest, |
| 813 | *weights_, |
| 814 | text_state.text_embeddings, |
| 815 | voice_state, |
| 816 | acoustic_config, |
| 817 | capacities.prompt_capacity, |
nothing calls this directly
no test coverage detected