Skip to content

Latest commit

ย 

History

History
executable file
ยท
370 lines (287 loc) ยท 12.6 KB

File metadata and controls

executable file
ยท
370 lines (287 loc) ยท 12.6 KB

๐ŸŽฌ StoryToVideo - ๆ•…ไบ‹ๅˆฐ่ง†้ข‘็”Ÿๆˆ็ณป็ปŸ

ไธ€ไธช็ซฏๅˆฐ็ซฏ็š„ AI ่ง†้ข‘็”Ÿๆˆๅนณๅฐ๏ผš่พ“ๅ…ฅๆ•…ไบ‹ๆ–‡ๆœฌ๏ผŒ่‡ชๅŠจ็”Ÿๆˆๅˆ†้•œใ€ๅ›พ็‰‡ใ€้…้Ÿณ๏ผŒๆœ€็ปˆๅˆๆˆๅฎŒๆ•ด่ง†้ข‘ใ€‚

GitHub License Qt Go Python


๐Ÿ“– ็›ฎๅฝ•


๐ŸŽฏ ้กน็›ฎ็ฎ€ไป‹

StoryToVideo ๆ˜ฏไธ€ไธชๅฐ†ๆ–‡ๆœฌๆ•…ไบ‹่‡ชๅŠจ่ฝฌๅŒ–ไธบ่ง†้ข‘็š„ AI ๅˆ›ไฝœๅทฅๅ…ทใ€‚็”จๆˆทๅช้œ€่พ“ๅ…ฅไธ€ๆฎตๆ•…ไบ‹ๆ–‡ๆœฌ๏ผŒ็ณป็ปŸๅฐ†่‡ชๅŠจ๏ผš

  1. ๅˆ†้•œ็”Ÿๆˆ - ๅˆฉ็”จ LLM ๅฐ†ๆ•…ไบ‹ๆ‹†่งฃไธบ็ป“ๆž„ๅŒ–ๅˆ†้•œ่„šๆœฌ
  2. ๅ›พๅƒ็”Ÿๆˆ - ไฝฟ็”จ Stable Diffusion ไธบๆฏไธชๅˆ†้•œ็”Ÿๆˆๅ…ณ้”ฎๅธง
  3. ่ฏญ้Ÿณๅˆๆˆ - ้€š่ฟ‡ TTS ๆจกๅž‹็”Ÿๆˆ้…้Ÿณๆ—็™ฝ
  4. ่ง†้ข‘ๅˆๆˆ - ๅฐ†ๆ‰€ๆœ‰็ด ๆๆ‹ผๆŽฅไธบๅฎŒๆ•ด MP4 ่ง†้ข‘

ๆ ธๅฟƒไปทๅ€ผ

็‰นๆ€ง ่ฏดๆ˜Ž
๐Ÿš€ ็ซฏๅˆฐ็ซฏ่‡ชๅŠจๅŒ– ไปŽๆ–‡ๆœฌๅˆฐ่ง†้ข‘๏ผŒๅ…จๆต็จ‹ AI ้ฉฑๅŠจ
๐ŸŽจ ๅคš้ฃŽๆ ผๆ”ฏๆŒ ็”ตๅฝฑ้ฃŽใ€ไบŒๆฌกๅ…ƒใ€ๅ†™ๅฎž็ญ‰ๅคš็ง้ข„่ฎพ้ฃŽๆ ผ
โœ๏ธ ๅฏ็ผ–่พ‘ๅˆ†้•œ ๆ”ฏๆŒๆ‰‹ๅŠจ่ฐƒๆ•ด Promptใ€ๆ—็™ฝใ€่ฝฌๅœบๆ•ˆๆžœ
๐Ÿ’ป ่ทจๅนณๅฐๅฎขๆˆท็ซฏ ๅŸบไบŽ Qt/QML ็š„ๆกŒ้ขๅบ”็”จ๏ผŒๆ”ฏๆŒ Windows/macOS
๐Ÿ”ง ๆจกๅ—ๅŒ–ๆžถๆž„ ๅ‰ๅŽ็ซฏๅˆ†็ฆป๏ผŒๆจกๅž‹ๆœๅŠกๅฏ็‹ฌ็ซ‹้ƒจ็ฝฒ

๐Ÿ— ็ณป็ปŸๆžถๆž„

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                           ็”จๆˆทๅฑ‚                                         โ”‚
โ”‚                    PC ๅฎขๆˆท็ซฏ (Qt 6.5 / QML / C++)                        โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                                โ”‚ REST API / WebSocket
                                โ–ผ
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚           ๅ•ๆœบ้ƒจ็ฝฒ (Linux + NVIDIA GPU, Docker Compose)                  โ”‚
โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”   โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”   โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”‚
โ”‚  โ”‚ Go Server   โ”‚   โ”‚ Gateway      โ”‚   โ”‚ Model Node (FastAPI)         โ”‚  โ”‚
โ”‚  โ”‚ Gin :8080   โ”‚   โ”‚ FastAPI :8000โ”‚   โ”‚ LLM/txt2img/img2vid/TTS      โ”‚  โ”‚
โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜   โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜   โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ”‚
โ”‚        โ”‚                  โ”‚                           โ”‚                 โ”‚
โ”‚        โ”œโ”€โ”€ MySQL           โ”‚                           โ”œโ”€โ”€ Ollama(host) โ”‚
โ”‚        โ”œโ”€โ”€ Redis + Asynq   โ”‚                           โ”‚   :11434       โ”‚
โ”‚        โ””โ”€โ”€ MinIO           โ”‚                           โ”‚                 โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

ๆ•ฐๆฎๆต็จ‹

็”จๆˆท่พ“ๅ…ฅๆ•…ไบ‹ โ†’ LLM ็”Ÿๆˆๅˆ†้•œ โ†’ SD ็”Ÿๆˆๅ›พ็‰‡ โ†’ TTS ็”Ÿๆˆ้…้Ÿณ โ†’ FFmpeg ๅˆๆˆ่ง†้ข‘ โ†’ ๅฏผๅ‡บ MP4

โœจ ๅŠŸ่ƒฝ็‰นๆ€ง

ๅทฒๅฎž็ŽฐๅŠŸ่ƒฝ โœ…

ๅŠŸ่ƒฝ ๆ่ฟฐ
ๆ–ฐๅปบๆ•…ไบ‹ ่พ“ๅ…ฅๆ–‡ๆœฌ(โ‰ค500ๅญ—)๏ผŒ้€‰ๆ‹ฉ้ฃŽๆ ผ๏ผŒไธ€้”ฎ็”Ÿๆˆๅˆ†้•œ
ๅˆ†้•œ็œ‹ๆฟ ๆจชๅ‘ๅก็‰‡ๆตๅฑ•็คบ๏ผŒ็Šถๆ€ๅฏ่ง†ๅŒ–๏ผˆ็ญ‰ๅพ…/็”Ÿๆˆไธญ/ๅฎŒๆˆ/ๅคฑ่ดฅ๏ผ‰
ๅˆ†้•œ็ผ–่พ‘ ็ผ–่พ‘ Promptใ€ๆ—็™ฝๆ–‡ๆœฌใ€้€‰ๆ‹ฉ่ฝฌๅœบๆ•ˆๆžœ
ๅ›พ็‰‡็”Ÿๆˆ ๅŸบไบŽ SD Turbo ็š„ๅฟซ้€Ÿๆ–‡็”Ÿๅ›พ
่ง†้ข‘้ข„่งˆ ๅ†…็ฝฎๆ’ญๆ”พๅ™จ๏ผŒๆ”ฏๆŒๆ’ญๆ”พ/ๆš‚ๅœ/่ฟ›ๅบฆๆŽงๅˆถ
่ง†้ข‘ๅฏผๅ‡บ ๅฏผๅ‡บไธบ MP4 ๆ–‡ไปถ
้กน็›ฎ็ฎก็† ๅކๅฒ้กน็›ฎๆŸฅ็œ‹ใ€ๅˆ ้™ค

่ง„ๅˆ’ไธญๅŠŸ่ƒฝ ๐Ÿšง

  • ๅ›พ็”Ÿ่ง†้ข‘ (SVD Img2Vid๏ผŒๅฏๅ…ณ้—ญๅนถ่‡ชๅŠจ้™็บง้™ๆ€่ง†้ข‘)
  • ่ƒŒๆ™ฏ้Ÿณไนๅˆๆˆ
  • ๅคš่ฏญ่จ€ TTS
  • ๆ‰น้‡ๅฏผๅ‡บ
  • ไบ‘็ซฏ้กน็›ฎๅŒๆญฅ

๐Ÿ“ ็›ฎๅฝ•็ป“ๆž„

StoryToVideo/
โ”œโ”€โ”€ ๐Ÿ“‚ client/                      # ๆกŒ้ขๅฎขๆˆท็ซฏ (Qt 6.5 / QML / C++)
โ”‚   โ””โ”€โ”€ ๐Ÿ“‚ 12.2StoryToVideo/        # Qt/QML ไธป้กน็›ฎ (qmake)
โ”‚       โ”œโ”€โ”€ src/                    # C++ ๆบ็ /ๅคดๆ–‡ไปถ
โ”‚       โ”œโ”€โ”€ qml/                    # QML ้กต้ข
โ”‚       โ”œโ”€โ”€ scripts/                # ๆž„ๅปบ/่ฟ่กŒ่„šๆœฌ๏ผˆmacOS๏ผ‰
โ”‚       โ”œโ”€โ”€ StoryToVideoGenerator.pro
โ”‚       โ””โ”€โ”€ qml.qrc
โ”‚
โ”œโ”€โ”€ ๐Ÿ“‚ ios/                         # iOS ๅฎขๆˆท็ซฏ (Swift / SwiftUI)
โ”‚   โ”œโ”€โ”€ ๐Ÿ“‚ StoryToVideo/            # ไธป้กน็›ฎไปฃ็ 
โ”‚   โ””โ”€โ”€ project.yml                 # XcodeGen ้…็ฝฎ
โ”‚
โ”œโ”€โ”€ ๐Ÿ“‚ server/                      # ๅŽ็ซฏๆœๅŠก (Go 1.21 / Gin)
โ”‚   โ”œโ”€โ”€ ๐Ÿ“‚ cmd/                     # ๆœๅŠกๅ…ฅๅฃ
โ”‚   โ”œโ”€โ”€ ๐Ÿ“‚ config/                  # ้…็ฝฎๆ–‡ไปถ
โ”‚   โ”œโ”€โ”€ ๐Ÿ“‚ internal/                # ไธšๅŠก้€ป่พ‘
โ”‚   โ””โ”€โ”€ Dockerfile                  # ๅฎนๅ™จๅŒ–้…็ฝฎ
โ”‚
โ”œโ”€โ”€ ๐Ÿ“‚ gateway/                     # ๆจกๅž‹็ฝ‘ๅ…ณ (Python / FastAPI)
โ”‚   โ”œโ”€โ”€ main.py                     # ่šๅˆ LLM/SD/TTS ่ฐƒ็”จ
โ”‚   โ”œโ”€โ”€ ๐Ÿ“‚ routers/                 # API ่ทฏ็”ฑ
โ”‚   โ””โ”€โ”€ ๐Ÿ“‚ services/                # ๆœๅŠกๅฐ่ฃ…
โ”‚
โ”œโ”€โ”€ ๐Ÿ“‚ model/                       # ๆจกๅž‹ๆœๅŠก (Python)
โ”‚   โ””โ”€โ”€ ๐Ÿ“‚ services/                # ๅ„ๆจกๅž‹ๆœๅŠก
โ”‚       โ”œโ”€โ”€ llm.py                  # LLM ๅˆ†้•œ็”Ÿๆˆ (Qwen2.5)
โ”‚       โ”œโ”€โ”€ txt2img.py              # ๆ–‡็”Ÿๅ›พ (SD Turbo)
โ”‚       โ”œโ”€โ”€ img2vid.py              # ๅ›พ็”Ÿ่ง†้ข‘ (SVD)
โ”‚       โ””โ”€โ”€ tts.py                  # ่ฏญ้Ÿณๅˆๆˆ (CosyVoice)
โ”‚
โ”œโ”€โ”€ ๐Ÿ“‚ docs/                        # ้กน็›ฎๆ–‡ๆกฃ
โ”‚   โ”œโ”€โ”€ ARCHITECTURE.md             # ๆžถๆž„่ฎพ่ฎก
โ”‚   โ”œโ”€โ”€ apis.md                     # API ๆ–‡ๆกฃ
โ”‚   โ”œโ”€โ”€ deploy.md                   # ้ƒจ็ฝฒๆŒ‡ๅ—
โ”‚   โ”œโ”€โ”€ releases/                   # ๅ‘ๅธƒๅฝ’ๆกฃ
โ”‚   โ””โ”€โ”€ ...                         # ๅ…ถไป–ๆ–‡ๆกฃ
โ”‚
โ”œโ”€โ”€ ๐Ÿ“„ docker-compose.yml           # ๅ•ๆœบ Docker ็ผ–ๆŽ’้…็ฝฎ
โ”œโ”€โ”€ ๐Ÿ“„ deploy-server.sh             # Docker ้ƒจ็ฝฒ่„šๆœฌ
โ”œโ”€โ”€ ๐Ÿ“„ environment.yml              # Conda ็Žฏๅขƒ้…็ฝฎ
โ”œโ”€โ”€ ๐Ÿ“„ start.sh                     # ๅฟซ้€ŸๅฏๅŠจ่„šๆœฌ
โ”œโ”€โ”€ ๐Ÿ“„ CHANGELOG.md                 # ็‰ˆๆœฌๅ˜ๆ›ด่ฎฐๅฝ•
โ””โ”€โ”€ ๐Ÿ“„ README.md                    # ๆœฌๆ–‡ไปถ

๐Ÿš€ ๅฟซ้€Ÿๅผ€ๅง‹

็Žฏๅขƒ่ฆๆฑ‚

็ป„ไปถ ็‰ˆๆœฌ่ฆๆฑ‚
ๆ“ไฝœ็ณป็ปŸ Windows 10+ / macOS 12+ / Ubuntu 20.04+
Qt 6.5+ (with Qt Quick)
Go 1.21+
Python 3.10+
CUDA 12.x (GPU ๆŽจ็†)
GPU ๆ˜พๅญ˜ โ‰ฅ 8GB (ๆŽจ่ 16GB+)

ไธ€้”ฎๅฏๅŠจ (ๅ•ๆœบ Docker, Linux)

# 0. ๅฎฟไธปๆœบๅฏๅŠจ Ollama๏ผˆๅนถๆ‹‰ๅ–ๆจกๅž‹๏ผ‰
ollama serve
ollama pull qwen2.5:0.5b

# 1. ๅ…‹้š†ไป“ๅบ“
git clone https://github.com/JadeSnow7/StoryToVideo.git
cd StoryToVideo

# 2. ้…็ฝฎ็Žฏๅขƒๅ˜้‡๏ผˆๅฏ้€‰๏ผšSVD_ENABLED=0 ๅ…ณ้—ญๅ›พ็”Ÿ่ง†้ข‘๏ผŒ่‡ชๅŠจ้™็บง้™ๆ€่ง†้ข‘๏ผ‰
cp .env.cloud.example .env

# 3. ๅฏๅŠจๅ…จๆ ˆ
./deploy-server.sh up

# 4. ๅฅๅบทๆฃ€ๆŸฅ
curl -fsS http://127.0.0.1:8000/health
curl -fsS http://127.0.0.1:8080/v1/api/health

๐Ÿ“ฆ ่ฏฆ็ป†้ƒจ็ฝฒๆŒ‡ๅ—

1. ๅ•ๆœบ Docker ้ƒจ็ฝฒ๏ผˆๆŽจ่๏ผ‰

ๅ‰็ฝฎๆกไปถ๏ผš

  • Docker + docker compose
  • NVIDIA Driver + NVIDIA Container Toolkit
  • ๅฎฟไธปๆœบ Ollama ๅทฒ่ฟ่กŒ๏ผˆ้ป˜่ฎค 11434๏ผ‰
cp .env.cloud.example .env
./deploy-server.sh up

ๆœๅŠกๅ…ฅๅฃ๏ผš

  • Gateway: http://127.0.0.1:8000
  • Go Server: http://127.0.0.1:8080
  • MinIO Console: http://127.0.0.1:9001

SVD ๅ›พ็”Ÿ่ง†้ข‘๏ผš

  • ้ป˜่ฎคๅผ€ๅฏ๏ผˆSVD_ENABLED=1๏ผ‰๏ผ›่ฎพ็ฝฎ SVD_ENABLED=0 ๅฐ†่‡ชๅŠจ้™็บงไธบ้™ๆ€่ง†้ข‘็‰‡ๆฎตๅนถ็ปง็ปญๆต็จ‹ใ€‚

2. ้…็ฝฎ่ฏดๆ˜Ž

  • Compose๏ผšdocker-compose.yml
  • Server ้…็ฝฎ๏ผšserver/config/config.docker.yaml๏ผˆๅฎนๅ™จๅ†…ๆŒ‚่ฝฝไธบ /app/config/config.yaml๏ผ‰
  • ไบงๅ‡บ็›ฎๅฝ•๏ผšDocker ๅท data_shared ๆŒ‚่ฝฝๅˆฐๅฎนๅ™จ /data

3. ๅฎขๆˆท็ซฏๆž„ๅปบ

cd client/12.2StoryToVideo

# ๆŽจ่๏ผšQt Creator ๆ‰“ๅผ€ StoryToVideoGenerator.pro ็›ดๆŽฅๆž„ๅปบ่ฟ่กŒ

# ๅ‘ฝไปค่กŒ๏ผˆqmake๏ผ‰
qmake StoryToVideoGenerator.pro
make -j

# macOS ๆ‰“ๅŒ…/่ฟ่กŒ๏ผˆHomebrew Qt๏ผ‰
./scripts/deploy.sh
./scripts/run.sh

๐Ÿ“ก API ๆ–‡ๆกฃ

ไธšๅŠก API (ๆœๅŠก็ซฏ :8080)

ๆ–นๆณ• ่ทฏๅพ„ ่ฏดๆ˜Ž
POST /v1/api/projects ๅˆ›ๅปบ้กน็›ฎๅนถ็”Ÿๆˆๅˆ†้•œ
GET /v1/api/projects/:id ่Žทๅ–้กน็›ฎ่ฏฆๆƒ…
GET /v1/api/projects/:id/shots ่Žทๅ–ๅˆ†้•œๅˆ—่กจ
POST /v1/api/projects/:id/shots/:shot_id ๆ›ดๆ–ฐๅˆ†้•œ
POST /v1/api/projects/:id/video ่งฆๅ‘่ง†้ข‘ๅˆๆˆ
GET /v1/api/tasks/:task_id ๆŸฅ่ฏขไปปๅŠก็Šถๆ€
DELETE /v1/api/projects/:id ๅˆ ้™ค้กน็›ฎ

็คบไพ‹่ฏทๆฑ‚

ๅˆ›ๅปบ้กน็›ฎ๏ผš

curl -X POST "http://localhost:8080/v1/api/projects?Title=ๆต‹่ฏ•ๆ•…ไบ‹&StoryText=ไปŽๅ‰ๆœ‰ไธ€ๅชๅฐ็Œซ&Style=cinematic&ShotCount=4"

ๅ“ๅบ”๏ผš

{
  "project_id": "proj-xxxxx",
  "text_task_id": "task-text-xxxxx",
  "shot_task_ids": ["task-shot-001", "task-shot-002", "task-shot-003", "task-shot-004"]
}

ๆŸฅ่ฏขไปปๅŠก็Šถๆ€๏ผš

curl "http://localhost:8080/v1/api/tasks/task-text-xxxxx"

ๅ“ๅบ”๏ผš

{
  "task": {
    "id": "task-text-xxxxx",
    "status": "finished",
    "progress": 100,
    "result": {
      "resource_type": "storyboard",
      "resource_url": "https://minio.xxx/storyboards/xxx.json"
    }
  }
}

๐Ÿ›  ๆŠ€ๆœฏๆ ˆ

ๅฑ‚็บง ๆŠ€ๆœฏ ่ฏดๆ˜Ž
ๅฎขๆˆท็ซฏ Qt 6.5+ / QML / C++ ่ทจๅนณๅฐๆกŒ้ขๅบ”็”จ
ๆœๅŠก็ซฏ Go 1.21+ / Gin RESTful API ๆœๅŠก
ๆ•ฐๆฎๅบ“ MySQL ๅ…ณ็ณปๅž‹ๆ•ฐๆฎๅญ˜ๅ‚จ
ไปปๅŠก้˜Ÿๅˆ— Redis + Asynq ๅผ‚ๆญฅไปปๅŠกๅค„็†
ๅฏน่ฑกๅญ˜ๅ‚จ MinIO ๅ›พ็‰‡/่ง†้ข‘่ต„ๆบๅญ˜ๅ‚จ
ๆจกๅž‹็ฝ‘ๅ…ณ Python / FastAPI AI ๆจกๅž‹็ผ–ๆŽ’
LLM Qwen2.5-0.5B (Ollama) ๅˆ†้•œ่„šๆœฌ็”Ÿๆˆ
ๆ–‡็”Ÿๅ›พ SD Turbo (diffusers) ๅฟซ้€Ÿๅ›พๅƒ็”Ÿๆˆ
TTS CosyVoice ่ฏญ้Ÿณๅˆๆˆ

โ“ ๅธธ่ง้—ฎ้ข˜

Q: ๅ›พ็‰‡ๆ— ๆณ•ๆ˜พ็คบ๏ผŸ

A: ๆฃ€ๆŸฅไปฅไธ‹ๅ‡ ็‚น๏ผš

  1. ็กฎ่ฎค MinIO ๆœๅŠกๆญฃๅธธ่ฟ่กŒ
  2. ๆฃ€ๆŸฅ image_path ๆ˜ฏๅฆไธบๅฎŒๆ•ด URL๏ผˆMinIO ่ฟ”ๅ›ž็š„ๆ˜ฏ็ญพๅ URL๏ผ‰
  3. ๅฎขๆˆท็ซฏ็ฝ‘็ปœๆ˜ฏๅฆ่ƒฝ่ฎฟ้—ฎ MinIO ๅœฐๅ€

Q: ไปปๅŠกไธ€็›ดๅกๅœจ pending๏ผŸ

A:

  1. ๆฃ€ๆŸฅ Redis ๆœๅŠกๆ˜ฏๅฆๆญฃๅธธ
  2. ๆŸฅ็œ‹ server ๆ—ฅๅฟ—ๆ˜ฏๅฆๆœ‰ไปปๅŠกๅ…ฅ้˜Ÿ
  3. ็กฎ่ฎค Gateway ๆœๅŠกๅฏ่ฎฟ้—ฎ

Q: ๆ–‡็”Ÿๅ›พๅคฑ่ดฅ๏ผŸ

A:

  1. ๆฃ€ๆŸฅ GPU ๆ˜พๅญ˜ๆ˜ฏๅฆๅ……่ถณ๏ผˆๅปบ่ฎฎ 8GB+๏ผ‰
  2. ็กฎ่ฎค SD Turbo ๆจกๅž‹ๅทฒไธ‹่ฝฝ
  3. ๆŸฅ็œ‹ txt2img ๆœๅŠกๆ—ฅๅฟ—

Q: ๅฆ‚ไฝ•ไฟฎๆ”น API ๅœฐๅ€๏ผŸ

A: ่ฎพ็ฝฎ็Žฏๅขƒๅ˜้‡ STORYTOVIDEO_API_BASE_URL๏ผˆ้ป˜่ฎค http://127.0.0.1:8080๏ผ‰๏ผš

export STORYTOVIDEO_API_BASE_URL=http://your-server:8080

๏ผˆ่ฏปๅ–้€ป่พ‘่ง client/12.2StoryToVideo/src/ApiConfig.h๏ผ‰


๐Ÿค ่ดก็ŒฎๆŒ‡ๅ—

ๆฌข่ฟŽๆไบค Issue ๅ’Œ Pull Request๏ผ

  1. Fork ๆœฌไป“ๅบ“
  2. ๅˆ›ๅปบ็‰นๆ€งๅˆ†ๆ”ฏ (git checkout -b feature/AmazingFeature)
  3. ๆไบคๆ›ดๆ”น (git commit -m 'Add some AmazingFeature')
  4. ๆŽจ้€ๅˆฐๅˆ†ๆ”ฏ (git push origin feature/AmazingFeature)
  5. ๆไบค Pull Request

๐Ÿ“„ ๅผ€ๆบๅ่ฎฎ

ๆœฌ้กน็›ฎ้‡‡็”จ MIT ๅ่ฎฎๅผ€ๆบ๏ผŒ่ฏฆ่ง LICENSE ๆ–‡ไปถใ€‚


๐Ÿ‘ฅ ๅ›ข้˜Ÿๆˆๅ‘˜

่ง’่‰ฒ ่Œ่ดฃ
ๅฎขๆˆท็ซฏๅผ€ๅ‘ Qt/QML ็•Œ้ขใ€็ฝ‘็ปœๅฐ่ฃ…ใ€ๆœฌๅœฐๅญ˜ๅ‚จ
ๆœๅŠก็ซฏๅผ€ๅ‘ Go APIใ€ไปปๅŠก้˜Ÿๅˆ—ใ€ๆ•ฐๆฎๅบ“่ฎพ่ฎก
AI ๅทฅ็จ‹ๅธˆ ๆจกๅž‹้ƒจ็ฝฒใ€Prompt ไผ˜ๅŒ–ใ€ๆ•ˆๆžœ่ฐƒไผ˜

๐Ÿ“ž ่”็ณปๆˆ‘ไปฌ


๐Ÿ“Œ ๆœ€ๅŽๆ›ดๆ–ฐ๏ผš 2026.01.19 | ็‰ˆๆœฌ๏ผš v1.0.0