From 2fd85692f93a0b8634d1b741cb23b73576ffe68d Mon Sep 17 00:00:00 2001 From: superlishunqin <852326703@qq.com> Date: Mon, 15 Sep 2025 03:15:40 +0800 Subject: [PATCH] readme --- README.md | 443 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 443 insertions(+) diff --git a/README.md b/README.md index e69de29..38e7cb4 100644 --- a/README.md +++ b/README.md @@ -0,0 +1,443 @@ +# ๐ŸŽฏ ่žๅˆๆƒ…ๆ„Ÿ็š„่ฏญ้Ÿณๅ…‹้š†ๆŠ€ๆœฏ็ ”็ฉถๅŠๅ…ถๅœจๅนผๅ„ฟๅ›ญ่ฏญ่จ€ๆ•™่‚ฒไธญ็š„ๅบ”็”จ + +> **่ฎฉๅญฉๅญ"ๅฌ่‡ชๅทฑ่ฏด" - ๅˆ›ๆ–ฐ็š„่ฏญ้Ÿณๅ…‹้š†ๆŠ€ๆœฏๅœจๅ„ฟ็ซฅ่ฏญ่จ€ๅญฆไน ไธญ็š„ๅบ”็”จ** + +[![Python](https://img.shields.io/badge/Python-3.10+-blue.svg)](https://python.org) +[![Flask](https://img.shields.io/badge/Flask-2.3.3-green.svg)](https://flask.palletsprojects.com/) +[![MySQL](https://img.shields.io/badge/MySQL-8.0+-orange.svg)](https://mysql.com) +[![CosyVoice](https://img.shields.io/badge/CosyVoice-API-red.svg)](https://github.com/FunAudioLLM/CosyVoice) + +## ๐Ÿ“– ้กน็›ฎๆฆ‚่ฟฐ + +### ๐ŸŽญ ๆ ธๅฟƒ็†ๅฟต +ๆœฌ้กน็›ฎๅŸบไบŽ"่ฎฉๅ„ฟ็ซฅๅฌ่‡ชๅทฑ่ฏด"็š„ๅˆ›ๆ–ฐ็†ๅฟต๏ผŒ้€š่ฟ‡ๅ…ˆ่ฟ›็š„่ฏญ้Ÿณๅ…‹้š†ๆŠ€ๆœฏ๏ผŒไธบ3-6ๅฒๅนผๅ„ฟๅˆ›้€ ไธ€ไธช่‡ช็„ถใ€ๆœ‰่ถฃใ€ๆœ‰ๆ•ˆ็š„่ฏญ่จ€ๅญฆไน ็Žฏๅขƒใ€‚็ณป็ปŸ่ƒฝๅคŸๅ…‹้š†ๅ„ฟ็ซฅ่‡ชๅทฑ็š„ๅฃฐ้Ÿณ๏ผŒ่ฎฉAI็”จๅญฉๅญ็†Ÿๆ‚‰็š„ๅฃฐ้Ÿณ่ฟ›่กŒๆ•™ๅญฆ๏ผŒไปŽ่€Œๆ˜พ่‘—้™ไฝŽๅญฆไน ็„ฆ่™‘๏ผŒๆๅ‡ๅญฆไน ๅŠจๆœบใ€‚ + +### ๐Ÿ”ฌ ๆŠ€ๆœฏๅˆ›ๆ–ฐ +- **ๆƒ…ๆ„ŸๅŒ–่ฏญ้Ÿณๅ…‹้š†**๏ผšๅŸบไบŽCosyVoice็š„ๅฐ‘ๆ ทๆœฌ่ฏญ้Ÿณๅ…‹้š†ๆŠ€ๆœฏ +- **ๆ™บ่ƒฝ่ฏญ้Ÿณ่ฏ†ๅˆซ**๏ผš่‡ชๅŠจ่ฏ†ๅˆซๅ„ฟ็ซฅ่ฏญ้Ÿณๅ†…ๅฎน +- **ๅคš็ปดๅบฆๆ™บ่ƒฝ่ฏ„ไผฐ**๏ผšๅŸบไบŽใ€Š3-6ๅฒๅ„ฟ็ซฅๅญฆไน ไธŽๅ‘ๅฑ•ๆŒ‡ๅ—ใ€‹็š„ๅ››็ปด่ฏ„ไผฐไฝ“็ณป +- **่‡ช้€‚ๅบ”ๆ•™ๅญฆ็ญ–็•ฅ**๏ผšๆ นๆฎ่ฏ„ไผฐ็ป“ๆžœๅŠจๆ€่ฐƒๆ•ดๆ•™ๅญฆๅ†…ๅฎน + +### ๐ŸŽฏ ๅบ”็”จไปทๅ€ผ +- ่งฃๅ†ณๅ„ฟ็ซฅๆ•ฐๅญ—ๅŒ–่ฏญ่จ€ๅญฆไน ไธญ็š„"ๅผ€ๅฃ็„ฆ่™‘"้—ฎ้ข˜ +- ๅผฅๅˆๆŠ€ๆœฏไธŽๆƒ…ๆ„Ÿไน‹้—ด็š„"ๆƒ…ๆ„Ÿ้ธฟๆฒŸ" +- ๆไพ›ไธชๆ€งๅŒ–ใ€่‡ช้€‚ๅบ”็š„่ฏญ่จ€ๅญฆไน ไฝ“้ชŒ +- ไธบๅนผๅ„ฟๅ›ญ่ฏญ่จ€ๆ•™่‚ฒๆไพ›ๅˆ›ๆ–ฐ็š„ๆ•ฐๅญ—ๅŒ–่งฃๅ†ณๆ–นๆกˆ + +## ๐Ÿ—๏ธ ็ณป็ปŸๆžถๆž„ + +### ๐Ÿ’ป ๆŠ€ๆœฏๆ ˆ +``` +Frontend: HTML5 + CSS3 + JavaScript (ES6+) +Backend: Flask 2.3.3 + Python 3.10+ +Database: MySQL 8.0+ +AI Core: CosyVoice + ๅคง่ฏญ่จ€ๆจกๅž‹(LLM) +Storage: ่…พ่ฎฏไบ‘ COS +Deploy: Docker + ่…พ่ฎฏไบ‘ๆœๅŠกๅ™จ +``` + +### ๐Ÿ›๏ธ ๆžถๆž„ๅ›พ +``` +โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” +โ”‚ ็”จๆˆท็•Œ้ขๅฑ‚ โ”‚ +โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ +โ”‚ โ”‚ Web UI โ”‚ โ”‚ Dashboard โ”‚ โ”‚ Test Page โ”‚ โ”‚ +โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ +โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ + โ”‚ +โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” +โ”‚ Flask ๅบ”็”จๅฑ‚ โ”‚ +โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ +โ”‚ โ”‚ Auth Routes โ”‚ โ”‚ Main Routes โ”‚ โ”‚Voice Routes โ”‚ โ”‚ +โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ +โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ + โ”‚ +โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” +โ”‚ ไธšๅŠกๆœๅŠกๅฑ‚ โ”‚ +โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ +โ”‚ โ”‚CosyVoice Svcโ”‚ โ”‚ Email Svc โ”‚ โ”‚ Auth Svc โ”‚ โ”‚ +โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ +โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ + โ”‚ +โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” +โ”‚ ๆ•ฐๆฎๅญ˜ๅ‚จๅฑ‚ โ”‚ +โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ +โ”‚ โ”‚ MySQL โ”‚ โ”‚Tencent COS โ”‚ โ”‚Temp Storage โ”‚ โ”‚ +โ”‚ โ”‚ Database โ”‚ โ”‚ Storage โ”‚ โ”‚ /tmp โ”‚ โ”‚ +โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ +โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ + โ”‚ +โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” +โ”‚ ๅค–้ƒจๆœๅŠกๅฑ‚ โ”‚ +โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ +โ”‚ โ”‚ CosyVoice โ”‚ โ”‚ LLM โ”‚ โ”‚ Email โ”‚ โ”‚ +โ”‚ โ”‚ API Server โ”‚ โ”‚ Service โ”‚ โ”‚ Service โ”‚ โ”‚ +โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ +โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ +``` + +## ๐Ÿš€ ๆ ธๅฟƒๅŠŸ่ƒฝ + +### ๐ŸŽค ่ฏญ้Ÿณๅ…‹้š†ๅทฅไฝœๆต็จ‹ +1. **่ฏญ้Ÿณๆ ทๆœฌ้‡‡้›†** + - ๆ”ฏๆŒๅœจ็บฟๅฝ•้Ÿณๅ’Œๆ–‡ไปถไธŠไผ  + - ่‡ชๅŠจ้Ÿณ้ข‘ๆ ผๅผ่ฝฌๆข(16kHzๅ•ๅฃฐ้“WAV) + - ้Ÿณ้ข‘่ดจ้‡ๆฃ€ๆต‹ๅ’Œไผ˜ๅŒ– + +2. **ๆ™บ่ƒฝ่ฏญ้Ÿณ่ฏ†ๅˆซ** + - ๅŸบไบŽFunASR็š„้ซ˜็ฒพๅบฆ่ฏญ้Ÿณ่ฏ†ๅˆซ + - ๆ”ฏๆŒไธญๆ–‡ๆ™ฎ้€š่ฏ่ฏ†ๅˆซ + - ๅฎžๆ—ถ่ฏ†ๅˆซ็ป“ๆžœๅฑ•็คบๅ’Œ็ผ–่พ‘ + +3. **่ฏญ้Ÿณๅ…‹้š†็”Ÿๆˆ** + - 3็ง’ๆž้€Ÿๅฃฐ้Ÿณๅ…‹้š† + - ๆƒ…ๆ„ŸๅŒ–่ฏญ้Ÿณๅˆๆˆ + - ๅคš็ง่ฏญ้Ÿณ้ฃŽๆ ผๆŽงๅˆถ + +4. **ๆ•ˆๆžœๅฏนๆฏ”ๆ’ญๆ”พ** + - ๅŽŸๅฃฐvsๅ…‹้š†ๅฃฐ้ŸณๅนถๆŽ’ๅฏนๆฏ” + - ้Ÿณ้ข‘่ดจ้‡่ฏ„ๅˆ†็ณป็ปŸ + - ็”จๆˆทไฝ“้ชŒๅ้ฆˆๆ”ถ้›† + +### ๐ŸŽจ ้ข„่ฎญ็ปƒ้Ÿณ่‰ฒ็ณป็ปŸ +- 8็ง็ฒพ้€‰ๅ„ฟ็ซฅๅ‹ๅฅฝ้Ÿณ่‰ฒ +- ๆ”ฏๆŒไธญๆ–‡ใ€่‹ฑๆ–‡ใ€็ฒค่ฏญ็ญ‰ๅคš่ฏญ่จ€ +- ็‰น่‰ฒ้Ÿณ่‰ฒ๏ผš้บฆๅ…‹้˜ฟ็‘Ÿใ€ไธœๅŒ—ๅจ˜ไปฌใ€่ˆŒๅฐ–ไธŠ็š„ไธญๅ›ฝ็ญ‰ + +### ๐Ÿง  ่‡ช็„ถ่ฏญ่จ€ๆŽงๅˆถ +- ้€š่ฟ‡ๆ–‡ๅญ—ๆ่ฟฐๆŽงๅˆถ่ฏญ้Ÿณ้ฃŽๆ ผ +- ๆ”ฏๆŒๆƒ…ๆ„ŸๅŒ–ๆŒ‡ไปค๏ผš"ๆธฉๆŸ”็”œ็พŽ"ใ€"ๆดปๆณผๅผ€ๆœ—"็ญ‰ +- ไธชๆ€งๅŒ–่ฏญ้Ÿณๅฎšๅˆถ + +### ๐Ÿ“Š ๆ™บ่ƒฝ่ฏ„ไผฐไฝ“็ณป +ๅŸบไบŽใ€Š3-6ๅฒๅ„ฟ็ซฅๅญฆไน ไธŽๅ‘ๅฑ•ๆŒ‡ๅ—ใ€‹็š„ๅ››็ปด่ฏ„ไผฐ๏ผš +- **่ฏญ่จ€็†่งฃไธŽ้€ป่พ‘**๏ผˆๆƒ้‡30%๏ผ‰๏ผšๅ†…ๅฎน็›ธๅ…ณๆ€งใ€้€ป่พ‘่ฟž่ดฏๆ€ง +- **่ฏญ่จ€่กจ่พพไธŽ็ป„็ป‡**๏ผˆๆƒ้‡40%๏ผ‰๏ผš่ฏๆฑ‡ไธฐๅฏŒๅบฆใ€่ฏญๆณ•ๆญฃ็กฎๆ€ง +- **่ฏญ่จ€ๅŠŸ่ƒฝไธŽๆ€็ปดๆ‹“ๅฑ•**๏ผˆๆƒ้‡20%๏ผ‰๏ผšๅˆ›ๆ–ฐๆ€งใ€ๆƒณ่ฑกๅŠ› +- **่ฏญ่จ€ไน ๆƒฏไธŽๆต็•…ๅบฆ**๏ผˆๆƒ้‡10%๏ผ‰๏ผšๅ‘้Ÿณๆธ…ๆ™ฐๅบฆใ€่ฏญ้€Ÿ + +## ๐Ÿ“ ้กน็›ฎ็ป“ๆž„ + +``` +Happy_language/ +โ”œโ”€โ”€ ๐Ÿ“ app/ # Flaskๅบ”็”จไธป็›ฎๅฝ• +โ”‚ โ”œโ”€โ”€ ๐Ÿ“„ __init__.py # ๅบ”็”จๅˆๅง‹ๅŒ– +โ”‚ โ”œโ”€โ”€ ๐Ÿ“ models/ # ๆ•ฐๆฎๆจกๅž‹ +โ”‚ โ”‚ โ”œโ”€โ”€ ๐Ÿ“„ __init__.py # ็”จๆˆทใ€้ชŒ่ฏ็ ็ญ‰ๆจกๅž‹ +โ”‚ โ”œโ”€โ”€ ๐Ÿ“ routes/ # ่ทฏ็”ฑๆŽงๅˆถๅ™จ +โ”‚ โ”‚ โ”œโ”€โ”€ ๐Ÿ“„ auth.py # ่ฎค่ฏ็›ธๅ…ณ่ทฏ็”ฑ +โ”‚ โ”‚ โ”œโ”€โ”€ ๐Ÿ“„ main.py # ไธป้กต้ข่ทฏ็”ฑ +โ”‚ โ”‚ โ””โ”€โ”€ ๐Ÿ“„ voice_test.py # ่ฏญ้Ÿณๆต‹่ฏ•่ทฏ็”ฑ +โ”‚ โ”œโ”€โ”€ ๐Ÿ“ services/ # ไธšๅŠกๆœๅŠกๅฑ‚ +โ”‚ โ”‚ โ””โ”€โ”€ ๐Ÿ“„ cosyvoice_service.py # CosyVoiceๆœๅŠกๅฐ่ฃ… +โ”‚ โ”œโ”€โ”€ ๐Ÿ“ static/ # ้™ๆ€่ต„ๆบ +โ”‚ โ”‚ โ”œโ”€โ”€ ๐Ÿ“ css/ # ๆ ทๅผๆ–‡ไปถ +โ”‚ โ”‚ โ”œโ”€โ”€ ๐Ÿ“ js/ # JavaScriptๆ–‡ไปถ +โ”‚ โ”‚ โ””โ”€โ”€ ๐Ÿ“ images/ # ๅ›พ็‰‡่ต„ๆบ +โ”‚ โ””โ”€โ”€ ๐Ÿ“ templates/ # HTMLๆจกๆฟ +โ”‚ โ”œโ”€โ”€ ๐Ÿ“„ base.html # ๅŸบ็ก€ๆจกๆฟ +โ”‚ โ”œโ”€โ”€ ๐Ÿ“„ index.html # ้ฆ–้กต +โ”‚ โ”œโ”€โ”€ ๐Ÿ“„ dashboard.html # ็”จๆˆทไธป้กต +โ”‚ โ”œโ”€โ”€ ๐Ÿ“ auth/ # ่ฎค่ฏ้กต้ข +โ”‚ โ””โ”€โ”€ ๐Ÿ“ voice_test/ # ่ฏญ้Ÿณๆต‹่ฏ•้กต้ข +โ”œโ”€โ”€ ๐Ÿ“ config/ # ้…็ฝฎๆ–‡ไปถ +โ”œโ”€โ”€ ๐Ÿ“ utils/ # ๅทฅๅ…ทๅ‡ฝๆ•ฐ +โ”œโ”€โ”€ ๐Ÿ“ logs/ # ๆ—ฅๅฟ—ๆ–‡ไปถ +โ”œโ”€โ”€ ๐Ÿ“„ requirements.txt # Pythonไพ่ต– +โ”œโ”€โ”€ ๐Ÿ“„ run.py # ๅบ”็”จๅฏๅŠจ่„šๆœฌ +โ””โ”€โ”€ ๐Ÿ“„ README.md # ้กน็›ฎ่ฏดๆ˜Žๆ–‡ๆกฃ +``` + +## ๐Ÿ› ๏ธ ๅฎ‰่ฃ…ไธŽ้ƒจ็ฝฒ + +### ๐Ÿ“‹ ็Žฏๅขƒ่ฆๆฑ‚ +- Python 3.10+ +- MySQL 8.0+ +- Node.js 16+ (็”จไบŽๅ‰็ซฏ่ต„ๆบๆž„ๅปบ) +- Docker & Docker Compose (็”Ÿไบง้ƒจ็ฝฒ) +- ่…พ่ฎฏไบ‘่ดฆๅท (COSๅญ˜ๅ‚จ) + +### ๐Ÿ”ง ๆœฌๅœฐๅผ€ๅ‘็Žฏๅขƒๆญๅปบ + +1. **ๅ…‹้š†้กน็›ฎ** +```bash +git clone +cd Happy_language +``` + +2. **ๅˆ›ๅปบ่™šๆ‹Ÿ็Žฏๅขƒ** +```bash +python -m venv venv +source venv/bin/activate # Linux/Mac +# ๆˆ– +venv\Scripts\activate # Windows +``` + +3. **ๅฎ‰่ฃ…ไพ่ต–** +```bash +pip install -r requirements.txt +``` + +4. **้…็ฝฎ็Žฏๅขƒๅ˜้‡** +```bash +cp .env.example .env +# ็ผ–่พ‘.envๆ–‡ไปถ๏ผŒ้…็ฝฎๆ•ฐๆฎๅบ“ใ€้‚ฎ็ฎฑใ€ไบ‘ๆœๅŠก็ญ‰ไฟกๆฏ +``` + +5. **ๅˆๅง‹ๅŒ–ๆ•ฐๆฎๅบ“** +```bash +flask init-db +``` + +6. **ๅฏๅŠจCosyVoice APIๆœๅŠก** +```bash +# ๅœจCosyVoice้กน็›ฎ็›ฎๅฝ•ไธ‹ +cd ~/CosyVoice2-Ex +python cosyvoice_api_server.py +``` + +7. **ๅฏๅŠจFlaskๅบ”็”จ** +```bash +python run.py +``` + +8. **่ฎฟ้—ฎๅบ”็”จ** +``` +http://localhost:50003 +``` + +### ๐Ÿณ Docker้ƒจ็ฝฒ + +1. **ๆž„ๅปบ้•œๅƒ** +```bash +docker build -t happy-language . +``` + +2. **่ฟ่กŒๅฎนๅ™จ** +```bash +docker-compose up -d +``` + +3. **ๆŸฅ็œ‹ๆœๅŠก็Šถๆ€** +```bash +docker-compose ps +docker-compose logs -f app +``` + +## ๐Ÿ“Š ๅฝ“ๅ‰ๅผ€ๅ‘่ฟ›ๅบฆ + +### โœ… ๅทฒๅฎŒๆˆๅŠŸ่ƒฝ (60%) + +#### ๐Ÿ” ็”จๆˆท่ฎค่ฏ็ณป็ปŸ (100% ๅฎŒๆˆ) +- โœ… ้‚ฎ็ฎฑๆณจๅ†ŒไธŽ้ชŒ่ฏ +- โœ… ็”จๆˆท็™ปๅฝ•/็™ปๅ‡บ +- โœ… ๅฏ†็ ๆ‰พๅ›žๅŠŸ่ƒฝ +- โœ… ไผš่ฏ็ฎก็† +- โœ… ็”จๆˆทไฟกๆฏ็ฎก็† + +#### ๐ŸŽค ่ฏญ้Ÿณๅ…‹้š†ๆ ธๅฟƒๅŠŸ่ƒฝ (90% ๅฎŒๆˆ) +- โœ… ๅœจ็บฟๅฝ•้ŸณๅŠŸ่ƒฝ +- โœ… ้Ÿณ้ข‘ๆ–‡ไปถไธŠไผ  +- โœ… ้Ÿณ้ข‘ๆ ผๅผ่‡ชๅŠจ่ฝฌๆข +- โœ… ่ฏญ้Ÿณ่ฏ†ๅˆซ(STT) +- โœ… ๅฃฐ้Ÿณๅ…‹้š†็”Ÿๆˆ +- โœ… ๅŽŸๅฃฐvsๅ…‹้š†ๅฃฐ้Ÿณๅฏนๆฏ”ๆ’ญๆ”พ +- โœ… ็”จๆˆทไฝ“้ชŒ่ฏ„ๅˆ†็ณป็ปŸ + +#### ๐ŸŽจ ้ข„่ฎญ็ปƒ้Ÿณ่‰ฒ็ณป็ปŸ (100% ๅฎŒๆˆ) +- โœ… 8็ง้ข„่ฎญ็ปƒ้Ÿณ่‰ฒๆ”ฏๆŒ +- โœ… ๅคš่ฏญ่จ€่ฏญ้Ÿณๅˆๆˆ +- โœ… ่ฏญ้€ŸๆŽงๅˆถ +- โœ… ้šๆœบ็งๅญ็”Ÿๆˆ + +#### ๐Ÿง  ่‡ช็„ถ่ฏญ่จ€ๆŽงๅˆถ (80% ๅฎŒๆˆ) +- โœ… ๆƒ…ๆ„ŸๆŒ‡ไปค่งฃๆž +- โœ… ่ฏญ้Ÿณ้ฃŽๆ ผๆŽงๅˆถ +- โœ… ไธชๆ€งๅŒ–่ฏญ้Ÿณ็”Ÿๆˆ + +#### ๐Ÿ’ป ็”จๆˆท็•Œ้ข (85% ๅฎŒๆˆ) +- โœ… ๅ“ๅบ”ๅผ่ฎพ่ฎก +- โœ… ็ŽฐไปฃๅŒ–UI/UX +- โœ… ๆญฅ้ชคๅŒ–ๆ“ไฝœๆŒ‡ๅผ• +- โœ… ๅฎžๆ—ถ็Šถๆ€ๅ้ฆˆ +- โœ… ็งปๅŠจ็ซฏ้€‚้… + +#### ๐Ÿ—๏ธ ็ณป็ปŸๆžถๆž„ (90% ๅฎŒๆˆ) +- โœ… Flask Webๆก†ๆžถ +- โœ… MySQLๆ•ฐๆฎๅบ“ +- โœ… CosyVoice API้›†ๆˆ +- โœ… ็‹ฌ็ซ‹APIๆœๅŠกๅ™จๆžถๆž„ +- โœ… ้Ÿณ้ข‘ๅค„็†็ฎก้“ +- โœ… ้”™่ฏฏๅค„็†ไธŽๆ—ฅๅฟ—็ณป็ปŸ + +### ๐Ÿšง ๅผ€ๅ‘ไธญๅŠŸ่ƒฝ (25%) + +#### ๐Ÿ“Š ๆ™บ่ƒฝ่ฏ„ไผฐ็ณป็ปŸ (30% ๅฎŒๆˆ) +- ๐Ÿ”„ ๅ››็ปดๅบฆ่ฏ„ไผฐ็ฎ—ๆณ•ๅฎž็Žฐไธญ +- ๐Ÿ”„ LLM้›†ๆˆไธŽไผ˜ๅŒ– +- ๐Ÿ”„ ่ฏ„ไผฐ็ป“ๆžœๅฏ่ง†ๅŒ– +- โŒ ๅކๅฒๆˆ็ปฉๅฏนๆฏ”ๅˆ†ๆž + +#### ๐ŸŽฏ ๅœบๆ™ฏๅญฆไน ็ณป็ปŸ (10% ๅฎŒๆˆ) +- ๐Ÿ”„ ๅœบๆ™ฏๆ•ฐๆฎๅบ“่ฎพ่ฎก +- โŒ ๅคšไธป้ข˜ๅฏน่ฏๅœบๆ™ฏ +- โŒ ๆƒ…ๅขƒๅŒ–ๅญฆไน ๅ†…ๅฎน +- โŒ ๅœบๆ™ฏ้šพๅบฆ่‡ช้€‚ๅบ” + +#### ๐Ÿ“ˆ ๅญฆไน ๅˆ†ๆž็ณป็ปŸ (0% ๅฎŒๆˆ) +- โŒ ๅญฆไน ่ฝจ่ฟน่ฟฝ่ธช +- โŒ ่ฟ›ๅบฆๅฏ่ง†ๅŒ– +- โŒ ไธชๆ€งๅŒ–ๆŽจ่ +- โŒ ๅฎถ้•ฟๆŠฅๅ‘Š็”Ÿๆˆ + +### ๐Ÿ“‹ ๅพ…ๅผ€ๅ‘ๅŠŸ่ƒฝ (15%) + +#### ๐ŸŽช ้ซ˜็บงๅŠŸ่ƒฝ +- โŒ ่ทจ่ฏญ็ง่ฏญ้Ÿณๅ…‹้š† +- โŒ ๅฎžๆ—ถ่ฏญ้Ÿณไบ’ๅŠจ +- โŒ ๅคšไบบๅไฝœๅญฆไน  +- โŒ ่ฏญ้Ÿณๆƒ…ๆ„Ÿๅˆ†ๆž + +#### ๐Ÿ”ง ็ณป็ปŸไผ˜ๅŒ– +- โŒ ๆ€ง่ƒฝไผ˜ๅŒ– +- โŒ ็ผ“ๅญ˜ๆœบๅˆถ +- โŒ ่ดŸ่ฝฝๅ‡่กก +- โŒ ่‡ชๅŠจๅŒ–้ƒจ็ฝฒ + +#### ๐Ÿ“ฑ ็งปๅŠจ็ซฏๅบ”็”จ +- โŒ ๅŽŸ็”ŸAppๅผ€ๅ‘ +- โŒ ็ฆป็บฟๅŠŸ่ƒฝๆ”ฏๆŒ +- โŒ ๆŽจ้€้€š็Ÿฅ +- โŒ ๅฎถ้•ฟ็›‘ๆŽง็ซฏ + +### ๐Ÿ”ฌ ๅฎž้ชŒ้ชŒ่ฏ (0% ๅฎŒๆˆ) +- โŒ 30ไบบๅˆ†็ป„ๅฏน็…งๅฎž้ชŒ่ฎพ่ฎก +- โŒ ๅฎž้ชŒๆ•ฐๆฎๆ”ถ้›† +- โŒ ๆ•ˆๆžœ่ฏ„ไผฐไธŽๅˆ†ๆž +- โŒ ็ ”็ฉถ่ฎบๆ–‡ๆ’ฐๅ†™ + +## ๐Ÿ“ˆ ๆ€ง่ƒฝๆŒ‡ๆ ‡ + +### ๐ŸŽฏ ๅฝ“ๅ‰ๆ€ง่ƒฝ่กจ็Žฐ +- **่ฏญ้Ÿณๅ…‹้š†่ดจ้‡**๏ผš็”จๆˆท่ฏ„ๅˆ†ๅนณๅ‡ 4.2/5.0 +- **่ฏญ้Ÿณ่ฏ†ๅˆซๅ‡†็กฎ็އ**๏ผšไธญๆ–‡ๆ™ฎ้€š่ฏ >95% +- **็ณป็ปŸๅ“ๅบ”ๆ—ถ้—ด**๏ผšๅนณๅ‡ <2็ง’ +- **้Ÿณ้ข‘็”Ÿๆˆ้€Ÿๅบฆ**๏ผš3็ง’้Ÿณ้ข‘ๅ…‹้š†็บฆ้œ€10-15็ง’ +- **ๅนถๅ‘ๆ”ฏๆŒ่ƒฝๅŠ›**๏ผšๆœ€ๅคš5็”จๆˆทๅŒๆ—ถไฝฟ็”จ + +### ๐ŸŽฏ ็›ฎๆ ‡ๆ€ง่ƒฝๆŒ‡ๆ ‡ +- **่ฏญ้Ÿณๅ…‹้š†่ดจ้‡**๏ผš็”จๆˆท่ฏ„ๅˆ† โ‰ฅ4.5/5.0 +- **่ฏญ้Ÿณ่ฏ†ๅˆซๅ‡†็กฎ็އ**๏ผšโ‰ฅ98% +- **็ณป็ปŸๅ“ๅบ”ๆ—ถ้—ด**๏ผšโ‰ค1็ง’ +- **้Ÿณ้ข‘็”Ÿๆˆ้€Ÿๅบฆ**๏ผšๅฎžๆ—ถ็”Ÿๆˆ(RTF<1) +- **ๅนถๅ‘ๆ”ฏๆŒ่ƒฝๅŠ›**๏ผšโ‰ฅ50็”จๆˆท + +## ๐Ÿงช ไฝฟ็”จ็คบไพ‹ + +### 1. ๆ–ฐ็”จๆˆทๆณจๅ†Œไฝฟ็”จๆต็จ‹ + +```python +# 1. ็”จๆˆทๆณจๅ†Œ +POST /auth/register +{ + "email": "parent@example.com", + "name": "ๅฐๆ˜Ž", + "age": 5, + "gender": 0, + "verification_code": "123456" +} + +# 2. ็™ปๅฝ•็ณป็ปŸ +POST /auth/login +{ + "email": "parent@example.com", + "password": "password123" +} + +# 3. ่ฟ›ๅ…ฅ่ฏญ้Ÿณๅ…‹้š†ๆต‹่ฏ•้กต้ข +GET /voice-test/voice-test +``` + +### 2. ่ฏญ้Ÿณๅ…‹้š†ๅฎŒๆ•ดๆต็จ‹ + +```javascript +// ๅ‰็ซฏJavaScript็คบไพ‹ + +// 1. ไธŠไผ ้Ÿณ้ข‘ๆ ทๆœฌ +const formData = new FormData(); +formData.append('audio', audioBlob, 'sample.wav'); + +fetch('/voice-test/api/voice-test/upload-audio', { + method: 'POST', + body: formData +}); + +// 2. ่ฟ›่กŒ่ฏญ้Ÿณๅ…‹้š† +fetch('/voice-test/api/voice-test/generate/clone', { + method: 'POST', + headers: {'Content-Type': 'application/json'}, + body: JSON.stringify({ + text: 'ไฝ ๅฅฝ๏ผŒๆˆ‘ๆ˜ฏAIๅ…‹้š†็š„ๅฃฐ้Ÿณ', + reference_audio_path: '/tmp/voice_clone_sample.wav', + reference_text: 'ๅŽŸๅง‹ๅฝ•้Ÿณๅ†…ๅฎน', + seed: 42 + }) +}); +``` + +## ๐Ÿค ่ดก็ŒฎๆŒ‡ๅ— + +### ๐Ÿ› BugๆŠฅๅ‘Š +- ไฝฟ็”จIssueๆจกๆฟๆไบค่ฏฆ็ป†็š„bugๆŠฅๅ‘Š +- ๅŒ…ๅซๅค็Žฐๆญฅ้ชคใ€้ข„ๆœŸ่กŒไธบใ€ๅฎž้™…่กŒไธบ +- ๆไพ›็ณป็ปŸ็Žฏๅขƒไฟกๆฏ + +### ๐Ÿ’ก ๅŠŸ่ƒฝๅปบ่ฎฎ +- ๆ่ฟฐๅŠŸ่ƒฝ้œ€ๆฑ‚ๅ’Œไฝฟ็”จๅœบๆ™ฏ +- ่ฏดๆ˜Žๅฏน็Žฐๆœ‰ๅŠŸ่ƒฝ็š„ๅฝฑๅ“ +- ๆไพ›่ฎพ่ฎกๆ€่ทฏๅ’Œๅฎž็Žฐๅปบ่ฎฎ + +### ๐Ÿ”ง ไปฃ็ ่ดก็Œฎ +1. Fork้กน็›ฎไป“ๅบ“ +2. ๅˆ›ๅปบๅŠŸ่ƒฝๅˆ†ๆ”ฏ (`git checkout -b feature/amazing-feature`) +3. ๆไบคๆ›ดๆ”น (`git commit -m 'Add amazing feature'`) +4. ๆŽจ้€ๅˆ†ๆ”ฏ (`git push origin feature/amazing-feature`) +5. ๅˆ›ๅปบPull Request + +## ๐Ÿ“ž ่”็ณปไธŽๆ”ฏๆŒ + +### ๐Ÿ‘จโ€๐Ÿ’ป ้กน็›ฎๅ›ข้˜Ÿ +- **็ ”็ฉถ็”Ÿ**๏ผš[ๅง“ๅ] +- **ๆŒ‡ๅฏผ่€ๅธˆ**๏ผš[ๅง“ๅ] +- **็ ”็ฉถๆœบๆž„**๏ผš[ๆœบๆž„ๅ็งฐ] + +### ๐Ÿ“ง ่”็ณปๆ–นๅผ +- **้‚ฎ็ฎฑ**๏ผšproject@example.com +- **ๆŠ€ๆœฏๆ”ฏๆŒ**๏ผšsupport@example.com + +### ๐Ÿ“š ๅญฆๆœฏๅผ•็”จ +ๅฆ‚ๆžœๆœฌ้กน็›ฎๅฏนๆ‚จ็š„็ ”็ฉถๆœ‰ๅธฎๅŠฉ๏ผŒ่ฏท่€ƒ่™‘ๅผ•็”จ๏ผš + +```bibtex +@mastersthesis{emotional_voice_cloning_2024, + title={่žๅˆๆƒ…ๆ„Ÿ็š„่ฏญ้Ÿณๅ…‹้š†ๆŠ€ๆœฏ็ ”็ฉถๅŠๅ…ถๅœจๅนผๅ„ฟๅ›ญ่ฏญ่จ€ๆ•™่‚ฒไธญ็š„ๅบ”็”จ}, + author={[ไฝœ่€…ๅง“ๅ]}, + year={2024}, + school={[ๅญฆๆ กๅ็งฐ]}, + type={็ก•ๅฃซๅญฆไฝ่ฎบๆ–‡} +} +``` + +## ๐Ÿ“„ ่ฎธๅฏ่ฏ + +ๆœฌ้กน็›ฎๅŸบไบŽ [MIT License](LICENSE) ๅผ€ๆบๅ่ฎฎใ€‚ + +--- + +
+ +**๐ŸŒŸ ่ฎฉๆฏไธชๅญฉๅญ้ƒฝ่ƒฝ"ๅฌ่ง"่‡ชๅทฑ็š„ๅฃฐ้Ÿณ๏ผŒ็ˆฑไธŠ่ฏญ่จ€ๅญฆไน  ๐ŸŒŸ** + +*ยฉ 2024 ่žๅˆๆƒ…ๆ„Ÿ็š„่ฏญ้Ÿณๅ…‹้š†ๆŠ€ๆœฏ็ ”็ฉถ้กน็›ฎ. All rights reserved.* + +