gitextract_bvsr8afo/ ├── LICENSE ├── README.md ├── SonicVale/ │ ├── .gitignore │ ├── README.md │ ├── app/ │ │ ├── __init__.py │ │ ├── core/ │ │ │ ├── __init__.py │ │ │ ├── audio_engin.py │ │ │ ├── config.py │ │ │ ├── enums.py │ │ │ ├── llm_engine.py │ │ │ ├── prompts.py │ │ │ ├── response.py │ │ │ ├── subtitle/ │ │ │ │ ├── ASRData.py │ │ │ │ ├── BaseASR.py │ │ │ │ ├── BcutASR.py │ │ │ │ ├── JianYingASR.py │ │ │ │ ├── KuaiShouASR.py │ │ │ │ ├── WhisperASR.py │ │ │ │ ├── __init__.py │ │ │ │ └── subtitle_engine.py │ │ │ ├── text_correct_engine.py │ │ │ ├── tts_engine.py │ │ │ ├── tts_runtime.py │ │ │ └── ws_manager.py │ │ ├── db/ │ │ │ └── database.py │ │ ├── dto/ │ │ │ ├── chapter_dto.py │ │ │ ├── emotion_dto.py │ │ │ ├── line_dto.py │ │ │ ├── llm_provider_dto.py │ │ │ ├── multi_emotion_voice_dto.py │ │ │ ├── project_dto.py │ │ │ ├── prompt_dto.py │ │ │ ├── role_dto.py │ │ │ ├── strength_dto.py │ │ │ ├── tts_provider_dto.py │ │ │ └── voice_dto.py │ │ ├── entity/ │ │ │ ├── chapter_entity.py │ │ │ ├── emotion_entity.py │ │ │ ├── line_entity.py │ │ │ ├── llm_provider_entity.py │ │ │ ├── multi_emotion_voice_entity.py │ │ │ ├── project_entity.py │ │ │ ├── prompt_entity.py │ │ │ ├── role_entity.py │ │ │ ├── strength_entity.py │ │ │ ├── tts_provider_entity.py │ │ │ └── voice_entity.py │ │ ├── main.py │ │ ├── models/ │ │ │ └── po.py │ │ ├── repositories/ │ │ │ ├── chapter_repository.py │ │ │ ├── emotion_repository.py │ │ │ ├── line_repository.py │ │ │ ├── llm_provider_repository.py │ │ │ ├── multi_emotion_voice_repository.py │ │ │ ├── project_repository.py │ │ │ ├── prompt_repository.py │ │ │ ├── role_repository.py │ │ │ ├── strength_repository.py │ │ │ ├── tts_provider_repository.py │ │ │ └── voice_repository.py │ │ ├── routers/ │ │ │ ├── chapter_router.py │ │ │ ├── emotion_router.py │ │ │ ├── line_router.py │ │ │ ├── llm_provider_router.py │ │ │ ├── multi_emotion_voice_router.py │ │ │ ├── project_router.py │ │ │ ├── prompt_router.py │ │ │ ├── role_router.py │ │ │ ├── strength_router.py │ │ │ ├── tts_provider_router.py │ │ │ └── voice_router.py │ │ └── services/ │ │ ├── chapter_service.py │ │ ├── emotion_service.py │ │ ├── line_service.py │ │ ├── llm_provider_service.py │ │ ├── multi_emotion_voice_service.py │ │ ├── project_service.py │ │ ├── prompt_service.py │ │ ├── role_service.py │ │ ├── strength_service.py │ │ ├── tts_provider_service.py │ │ └── voice_service.py │ └── requirements.txt └── sonicvale-front/ ├── .gitignore ├── .vscode/ │ └── extensions.json ├── README.md ├── electron/ │ ├── logger.js │ ├── main.js │ └── preload.js ├── index.html ├── package.json ├── resource/ │ └── license.txt ├── src/ │ ├── App.vue │ ├── api/ │ │ ├── chapter.js │ │ ├── config.js │ │ ├── enums.js │ │ ├── line.js │ │ ├── multiEmotionVoice.js │ │ ├── project.js │ │ ├── prompt.js │ │ ├── provider.js │ │ ├── role.js │ │ └── voice.js │ ├── components/ │ │ └── WaveCellPro.vue │ ├── main.js │ ├── pages/ │ │ ├── ConfigCenter.vue │ │ ├── ProjectDubbingDetail.vue │ │ ├── ProjectList.vue │ │ ├── PromptManager.vue │ │ └── VoiceManager.vue │ ├── router/ │ │ └── index.js │ ├── style.css │ └── utils/ │ └── utf8-or-gbk.js └── vite.config.js