AivisSpeech
April 2, 2026 · View on GitHub
ð AivisSpeech: AI Voice Imitation System - Text to Speech Software
AivisSpeech ã¯ãVOICEVOX ã®ãšãã£ã¿ãŒ UI ãããŒã¹ã«ãããæ¥æ¬èªé³å£°åæãœãããŠã§ã¢ã§ãã
æ¥æ¬èªé³å£°åæãšã³ãžã³ã® AivisSpeech Engine ãçµã¿èŸŒãã§ãããããããã«ææ
è±ããªé³å£°ãçæã§ããŸãã
ð AivisSpeech ãããŠã³ããŒã ïŒ ð AivisSpeech Engine ãããŠã³ããŒã
- ãŠãŒã¶ãŒã®æ¹ãž
- åäœç°å¢
- ãµããŒããããŠããé³å£°åæã¢ãã«
- éçºæ¹é
- éçºç°å¢ã®æ§ç¯
- éçº
- ã©ã€ã»ã³ã¹
ãŠãŒã¶ãŒã®æ¹ãž
AivisSpeech ã®äœ¿ãæ¹ããæ¢ãã®æ¹ã¯ãAivisSpeech å ¬åŒãµã€ã ãã芧ãã ããã
ãã®ããŒãžã§ã¯ãäž»ã«éçºè
åãã®æ
å ±ãæ²èŒããŠããŸãã
以äžã¯ãŠãŒã¶ãŒã®æ¹åãã®ããã¥ã¡ã³ãã§ãã
åäœç°å¢
Windowsã»macOS æèŒã® PC ã«å¯Ÿå¿ããŠããŸãã
AivisSpeech ãèµ·åããã«ã¯ãPC ã« 1.5GB 以äžã®ç©ºãã¡ã¢ãª (RAM) ãå¿
èŠã§ãã
- Windows: Windows 10 (22H2 以é)ã»Windows 11
- macOS: macOS 13 Ventura 以é
Note
Intel CPU æèŒ Mac ã§ã®åäœã¯ç©æ¥µçã«æ€èšŒããŠããŸããã
Intel CPU æèŒ Mac ã¯ãã§ã«è£œé ãçµäºããŠãããæ€èšŒç°å¢ããã«ãç°å¢ã®çšæèªäœãé£ãããªã£ãŠããŠããŸãããªãã¹ã Apple Silicon æèŒ Mac ã§ã®å©çšãããããããããŸãã
Warning
Windows 10 ã§ã¯ãããŒãžã§ã³ 22H2 ã§ã®åäœç¢ºèªã®ã¿è¡ã£ãŠããŸãã
ãµããŒããçµäºãã Windows 10 ã®å€ãããŒãžã§ã³ã LTSC (Long Term Servicing Channel) çã® Windows 10 ã§ã¯ãAivisSpeech Engine ãã¯ã©ãã·ã¥ãèµ·åã«å€±æããäºäŸãå ±åãããŠããŸãã
ã»ãã¥ãªãã£äžã®èгç¹ããããWindows 10 ç°å¢ã®æ¹ã¯ãæäœéããŒãžã§ã³ 22H2 ãŸã§æŽæ°ããŠããã®å©çšã匷ãããããããããŸãã
ãµããŒããããŠããé³å£°åæã¢ãã«
AivisSpeech ã«çµã¿èŸŒãŸããŠãã AivisSpeech Engine ã¯ãAIVMX (Aivis Voice Model for ONNX) (æ¡åŒµå .aivmx) ãã©ãŒãããã®é³å£°åæã¢ãã«ãã¡ã€ã«ããµããŒãããŠããŸãã
AIVM (Aivis Voice Model) / AIVMX (Aivis Voice Model for ONNX) ã¯ãåŠç¿æžã¿ã¢ãã«ã»ãã€ããŒãã©ã¡ãŒã¿ã»ã¹ã¿ã€ã«ãã¯ãã«ã»è©±è ã¡ã¿ããŒã¿ïŒååã»æŠèŠã»ã©ã€ã»ã³ã¹ã»ã¢ã€ã³ã³ã»ãã€ã¹ãµã³ãã« ãªã©ïŒã 1 ã€ã®ãã¡ã€ã«ã«ã®ã¥ããšãŸãšãããAI é³å£°åæã¢ãã«çšãªãŒãã³ãã¡ã€ã«ãã©ãŒãããã§ãã
AIVM 仿§ã AIVM / AIVMX ãã¡ã€ã«ã«ã€ããŠã®è©³çްã¯ãAivis Project ã«ãŠçå®ãã AIVM 仿§ ããåç §ãã ããã
Note
ãAIVMãã¯ãAIVM / AIVMX äž¡æ¹ã®ãã©ãŒããã仿§ã»ã¡ã¿ããŒã¿ä»æ§ã®ç·ç§°ã§ããããŸãã
å
·äœçã«ã¯ãAIVM ãã¡ã€ã«ã¯ãAIVM ã¡ã¿ããŒã¿ã远å ãã Safetensors 圢åŒããAIVMX ãã¡ã€ã«ã¯ãAIVM ã¡ã¿ããŒã¿ã远å ãã ONNX 圢åŒãã®ã¢ãã«ãã¡ã€ã«ã§ãã
ãAIVM ã¡ã¿ããŒã¿ããšã¯ãAIVM 仿§ã«å®çŸ©ãããŠãããåŠç¿æžã¿ã¢ãã«ã«çŽã¥ãåçš®ã¡ã¿ããŒã¿ã®ããšããããŸãã
Important
AivisSpeech Engine 㯠AIVM 仿§ã®ãªãã¡ã¬ã³ã¹å®è£
ã§ããããŸãããæ¢ã㊠AIVMX ãã¡ã€ã«ã®ã¿ããµããŒãããèšèšãšããŠããŸãã
ããã«ãããPyTorch ãžã®äŸåãæé€ããŠã€ã³ã¹ããŒã«ãµã€ãºãåæžããONNX Runtime ã«ããé«é㪠CPU æšè«ãå®çŸããŠããŸãã
Tip
AIVM Generator ã䜿ããšãæ¢åã®é³å£°åæã¢ãã«ãã AIVM / AIVMX ãã¡ã€ã«ãçæããããæ¢åã® AIVM / AIVMX ãã¡ã€ã«ã®ã¡ã¿ããŒã¿ãç·šéãããã§ããŸãïŒ
察å¿ã¢ãã«ã¢ãŒããã¯ãã£
以äžã®ã¢ãã«ã¢ãŒããã¯ãã£ã® AIVMX ãã¡ã€ã«ãå©çšã§ããŸãã
Style-Bert-VITS2Style-Bert-VITS2 (JP-Extra)
Note
AIVM ã¡ã¿ããŒã¿ã®ä»æ§äžã¯å€èšèªå¯Ÿå¿ã®è©±è
ãå®çŸ©ã§ããŸãããAivisSpeech Engine 㯠VOICEVOX ENGINE ãšåæ§ã«ãæ¥æ¬èªé³å£°åæã®ã¿ã«å¯Ÿå¿ããŠããŸãã
ãã®ãããè±èªãäžåœèªã«å¯Ÿå¿ããé³å£°åæã¢ãã«ã§ãã£ãŠããæ¥æ¬èªä»¥å€ã®é³å£°åæã¯ã§ããŸããã
ã¢ãã«ãã¡ã€ã«ã®é çœ®å Žæ
AIVMX ãã¡ã€ã«ã¯ãOS ããšã«ä»¥äžã®ãã©ã«ãã«é 眮ããŠãã ããã
- Windows:
C:\Users\(ãŠãŒã¶ãŒå)\AppData\Roaming\AivisSpeech-Engine\Models - macOS:
~/Library/Application Support/AivisSpeech-Engine/Models - Linux:
~/.local/share/AivisSpeech-Engine/Models
å®éã®ãã©ã«ããã¹ã¯ãAivisSpeech Engine ã®èµ·åçŽåŸã®ãã°ã« Models directory: ãšããŠè¡šç€ºãããŸãã
Tip
AivisSpeech å©çšæã¯ãAivisSpeech ã® UI ç»é¢ããç°¡åã«é³å£°åæã¢ãã«ã远å ã§ããŸãïŒ
ãšã³ããŠãŒã¶ãŒã®æ¹ã¯ãåºæ¬çã«ãã¡ãã®æ¹æ³ã§é³å£°åæã¢ãã«ã远å ããããšãããããããŸãã
Important
éçºç (PyInstaller ã§ãã«ããããŠããªãç¶æ
ã§ AivisSpeech Engine ãå®è¡ããŠããå Žå) ã®é
眮ãã©ã«ãã¯ãAivisSpeech-Engine 以äžã§ã¯ãªã AivisSpeech-Engine-Dev 以äžãšãªããŸãã
éçºæ¹é
VOICEVOX ã¯éåžžã«å·šå€§ãªãœãããŠã§ã¢ã§ãããçŸåšã掻çºã«éçºãç¶ããããŠããŸãã
ãã®ãããAivisSpeech ã§ã¯ VOICEVOX ã®ææ°çãããŒã¹ã«ã以äžã®æ¹éã§éçºãè¡ã£ãŠããŸãã
- VOICEVOX ææ°çãžã®è¿œåŸã容æã«ãããããã§ããã ãæ¹å€ãå¿
èŠæå°éã«çãã
- VOICEVOX ãã AivisSpeech ãžã®ãªãã©ã³ãã£ã³ã°ã¯å¿ èŠãªç®æã®ã¿è¡ã
- ãªãã¡ã¯ã¿ãªã³ã°ãè¡ããªã
- VOICEVOX ãšã®ã³ã³ããªã¯ããçºçããããšã容æã«äºæ³ãããäžãã³ãŒãå šäœã«ç²ŸéããŠããããã§ã¯ãªããã
- AivisSpeech ã§å©çšããªãæ©èœ (æå£°åææ©èœãªã©) ã§ãã£ãŠããã³ãŒãã®åé€ã¯è¡ããªã
- ãããã³ã³ããªã¯ããåé¿ãããã
- å©çšããªãã³ãŒãã®ç¡å¹åã¯åé€ã§ã¯ãªããã³ã¡ã³ãã¢ãŠãã§è¡ã
- ä¿å®ã远åŸãå°é£ãªãããããã¥ã¡ã³ãã®æŽæ°ã¯è¡ããªã
- ãã®ããåããã¥ã¡ã³ãã¯äžåæŽæ°ãããŠããããAivisSpeech ã§ã®å€æŽãåæ ããŠããªã
- AivisSpeech åãã®æ¹å€ã«ãšããªããã¹ãã³ãŒãã®ç¶æãå°é£ãªããããã¹ãã³ãŒãã®æŽæ°ã¯è¡ããªã
- ç¹ã« E2E ãã¹ã㯠UI ã倧ããæ¹å€ãããŠãããããŸãšãã«åäœããªã
- ãã¹ãã³ãŒãã®äžéšã¯ AivisSpeech ã«åãããŠä¿®æ£ãããŠããããåäœæ€èšŒã¯è¡ã£ãŠãããæŸçœ®ãããŠãã
éçºç°å¢ã®æ§ç¯
æé ã¯ãªãªãžãã«ã® VOICEVOX ãšç°ãªããŸãã
äºåã« Node.js 22.11.0 ãã€ã³ã¹ããŒã«ãããŠããå¿
èŠããããŸãã
# äŸåé¢ä¿ããã¹ãŠã€ã³ã¹ããŒã«
npm ci
# .env.development ã .env ã«ã³ããŒ
## ã³ããŒãã .env ãç·šéããå¿
èŠã¯ãªã
cp .env.development .env
# macOS ã®ã¿ã.env.production ãç·šé
nano .env.production
--------------------
# executionFilePath ã "AivisSpeech-Engine/run.exe" ãã "../Resources/AivisSpeech-Engine/run" ã«æžãæãã
## executionFilePath ã¯ãnpm run electron:build ã§ãã«ããã補åãã«ãã® AivisSpeech ã®èµ·åæã«äœ¿çšããã
...
VITE_DEFAULT_ENGINE_INFOS=`[
{
"uuid": "1b4a5014-d9fd-11ee-b97d-83c170a68ed3",
"name": "AivisSpeech Engine",
"executionEnabled": true,
"executionFilePath": "../Resources/AivisSpeech-Engine/run",
"executionArgs": [],
"host": "http://127.0.0.1:10101"
}
]`
...
--------------------
# äºåã«å¥ã®ã¿ãŒããã«ã§ AivisSpeech Engine ãèµ·åããŠãã
## AivisSpeech Engine ã®éçºç°å¢ã¯å¥éæ§ç¯ããå¿
èŠããã
cd ../AivisSpeech-Engine
poetry run task serve
éçº
æé ã¯äžéšãªãªãžãã«ã® VOICEVOX ãšç°ãªããŸãã
# éçºç°å¢ã§ Electron ç AivisSpeech ãèµ·å
npm run electron:serve
# éçºç°å¢ã§ãã©ãŠã¶ç AivisSpeech ãèµ·å
npm run browser:serve
# Electron ç AivisSpeech ããã«ã
npm run electron:build
# ãã©ãŠã¶ç AivisSpeech (WIP) ããã«ã
npm run browser:build
# ã³ãŒããã©ãŒããããèªåä¿®æ£
npm run format
# ã³ãŒããã©ãŒãããããã§ãã¯
npm run lint
# OpenAPI Generator ã«ããèªåçæã³ãŒããæŽæ°
npm run openapi:generate
# äŸåã©ã€ãã©ãªã®ã©ã€ã»ã³ã¹æ
å ±ãçæ
## VOICEVOX ãšç°ãªããé³å£°åæãšã³ãžã³ãšã®ã©ã€ã»ã³ã¹æ
å ±ãšã®çµ±åã¯è¡ããªã
## ãšãã£ã¿åŽã§å¥éãšã³ãžã³ãããã§ã¹ãããååŸããã©ã€ã»ã³ã¹æ
å ±ã衚瀺ã§ããããã«ããŠããããäžèŠ
npm run license:generate
ã©ã€ã»ã³ã¹
ããŒã¹ã§ãã VOICEVOX / VOICEVOX ENGINE ã®ãã¥ã¢ã«ã©ã€ã»ã³ã¹ã®ãã¡ãLGPL-3.0 ã®ã¿ãåç¬ã§ç¶æ¿ããŸãã
äžèšãªãã³ã« docs/ 以äžã®ããã¥ã¡ã³ãã¯ãVOICEVOX æ¬å®¶ã®ããã¥ã¡ã³ããæ¹å€ãªãã§ãã®ãŸãŸåŒãç¶ãã§ããŸãããããã®ããã¥ã¡ã³ãã®å 容ã AivisSpeech ã«ãéçšãããã¯ä¿èšŒãããŸããã
Special Thanks
AivisSpeech / AivisSpeech Engine ã¯ãå€ãã®çŽ æŽããããªãŒãã³ãœãŒã¹ãœãããŠã§ã¢ãšãã®è²¢ç®ã«æ·±ãæ¯ããããŠããŸãã
ãªãŒãã³ãœãŒã¹ãœãããŠã§ã¢ãéçºããŠãã ãã£ãå
šãŠã®æ¹ã
ãã³ãã¥ããã£ã®çæ§ã®è²¢ç®ãšãµããŒãã«ãå¿ããæè¬ããããŸãã
- @Stardust-minus
- @tuna2134
- @googlefan256
- @WariHima
- VOICEVOX Contributors
- VOICEVOX ENGINE Contributors
- Everyone in AI声ã¥ããæè¡ç ç©¶äŒ
VOICEVOX
VOICEVOX ã®ãšãã£ã¿ãŒã§ãã
ïŒãšã³ãžã³ã¯ VOICEVOX ENGINE ã ã³ã¢ã¯ VOICEVOX CORE ã å šäœæ§æã¯ ãã¡ã ã«è©³çްããããŸããïŒ
ãŠãŒã¶ãŒã®æ¹ãž
ãã¡ãã¯éçºçšã®ããŒãžã«ãªããŸããå©ç𿹿³ã«é¢ããŠã¯VOICEVOX å ¬åŒãµã€ã ãã芧ãã ããã
ãããžã§ã¯ãã«è²¢ç®ããããšèããŠããæ¹ãž
VOICEVOXãããžã§ã¯ãã¯èå³ããæ¹ã®åç»ãæè¿ããŠããŸãã è²¢ç®æé ã«ã€ããŠèª¬æããã¬ã€ãããçšæããŠãããŸãã
è²¢ç®ãšãããšããã°ã©ã äœæãšæãããã¡ã§ãããããã¥ã¡ã³ãå·çããã¹ãçæãæ¹åææ¡ãžã®è°è«åå ãªã©æ§ã ãªåå æ¹æ³ããããŸãã åå¿è æè¿ã¿ã¹ã¯ããããŸãã®ã§ãçæ§ã®ãåå ããåŸ ã¡ããŠãããŸãã
VOICEVOX ã®ãšãã£ã¿ã¯ Electronã»TypeScriptã»Vueã»Vuex ãªã©ã掻çšãããŠãããå
šäœæ§æããããã«ãããªã£ãŠããŸãã
ã³ãŒãã®æ©ãæ¹ã§æ§æã玹ä»ããŠããã®ã§ãéçºã®äžå©ã«ãªãã°å¹žãã§ãã
Issue ã解決ãããã«ãªã¯ãšã¹ããäœæãããéã¯ãå¥ã®æ¹ãšåã Issue ã«åãçµãããšãé¿ããããã Issue åŽã§åãçµã¿å§ããããšãäŒããããæåã« Draft ãã«ãªã¯ãšã¹ããäœæããŠãã ããã
VOICEVOX éå ¬åŒ Discord ãµãŒããŒã«ãŠãéçºã®è°è«ãéè«ãè¡ã£ãŠããŸããæ°è»œã«ãåå ãã ããã
ãã¶ã€ã³ã¬ã€ãã©ã€ã³
UXã»UI ãã¶ã€ã³ã®æ¹éããåç §ãã ããã
ç°å¢æ§ç¯
.node-version ã«èšèŒãããŠããããŒãžã§ã³ã® Node.js ãã€ã³ã¹ããŒã«ããŠãã ããã
Node.js ã®ç®¡çããŒã«ïŒnvsãVoltaãªã©ïŒãå©çšãããšç°¡åã«ã€ã³ã¹ããŒã«ã§ããNode.js ã®èªååãæ¿ããã§ããŸãã
Node.js ãã€ã³ã¹ããŒã«åŸããã®ãªããžã㪠ã Fork ã㊠git clone ããŠãã ããã
äŸåã©ã€ãã©ãªãã€ã³ã¹ããŒã«ãã
次ã®ã³ãã³ããå®è¡ããããšã§äŸåã©ã€ãã©ãªãã€ã³ã¹ããŒã«ã»ã¢ããããŒããããŸãã
npm i -g pnpm # ååã®ã¿
pnpm i
å®è¡
ãšã³ãžã³ã®æºå
.env.productionãã³ããŒããŠ.envãäœæããVITE_DEFAULT_ENGINE_INFOSå
ã®executionFilePathã«
補åç VOICEVOX å
ã®vv-engine/run.exeãæå®ããã°åããŸãã
Windows ã§ã€ã³ã¹ããŒã«å
ã倿ŽããŠããªãå Žåã¯C:/Users/(ãŠãŒã¶ãŒå)/AppData/Local/Programs/VOICEVOX/vv-engine/run.exeãæå®ããŠãã ããã
ãã¹ã®åºåãæåã¯\ã§ã¯ãªã/ãªã®ã§ã泚æãã ããã
macOS åãã®VOICEVOX.appãå©çšããŠããå Žåã¯/path/to/VOICEVOX.app/Resources/MacOS/vv-engine/runãæå®ããŠãã ããã
Linux ã®å Žåã¯ãReleasesããå
¥æã§ãã tar.gz çã«å«ãŸããvv-engine/runã³ãã³ããæå®ããŠãã ããã
AppImage çã®å Žåã¯$ /path/to/VOICEVOX.AppImage --appimage-mountã§ãã¡ã€ã«ã·ã¹ãã ãããŠã³ãã§ããŸãã
VOICEVOX ãšãã£ã¿ã®å®è¡ãšã¯å¥ã«ãšã³ãžã³ API ã®ãµãŒããç«ãŠãŠããå Žåã¯executionFilePathãæå®ããå¿
èŠã¯ãããŸãããã
代ããã«executionEnabledãfalseã«ããŠãã ããã
ããã¯è£œåç VOICEVOX ãèµ·åããŠããå ŽåãããŠã¯ãŸããŸãã
ãšã³ãžã³ API ã®å®å
ãšã³ããã€ã³ãã倿Žããå Žåã¯VITE_DEFAULT_ENGINE_INFOSå
ã®hostã倿ŽããŠãã ããã
Electron ã®å®è¡
# éçºããããç°å¢ã§å®è¡
pnpm run electron:serve
# ãã«ãæã«è¿ãç°å¢ã§å®è¡
pnpm run electron:serve --mode production
# åŒæ°ãæå®ããŠå®è¡
pnpm run electron:serve -- ...
é³å£°åæãšã³ãžã³ã®ãªããžããªã¯ãã¡ãã§ã https://github.com/VOICEVOX/voicevox_engine
Storybook ã®å®è¡
Storybook ã䜿ã£ãŠã³ã³ããŒãã³ããéçºããããšãã§ããŸãã
pnpm run storybook
main ãã©ã³ãã® Storybook ã¯VOICEVOX/preview-pagesãã確èªã§ããŸãã
https://voicevox.github.io/preview-pages/preview/editor/branch-main/storybook/index.html
ãã©ãŠã¶çã®å®è¡ïŒéçºäžïŒ
å¥éé³å£°åæãšã³ãžã³ãèµ·åãã以äžãå®è¡ããŠè¡šç€ºããã localhost ãžã¢ã¯ã»ã¹ããŸãã
pnpm run browser:serve
ãŸããmain ãã©ã³ãã®ãã«ãçµæãVOICEVOX/preview-pagesã«ãããã€ãããŠããŸãã
https://voicevox.github.io/preview-pages/preview/editor/branch-main/editor/index.html
ä»ã¯ããŒã«ã« PC äžã§é³å£°åæãšã³ãžã³ãèµ·åããå¿
èŠããããŸãã
ãã«ã
pnpm run electron:build
Github Actions ã§ãã«ã
fork ãããªããžããªã§ Actions ã ON ã«ããworkflow_dispatch ã§build.ymlãèµ·åããã°ãã«ãã§ããŸãã
ææç©ã¯ Release ã«ã¢ããããŒããããŸãã
ãã¹ã
åäœãã¹ã
./tests/unit/ 以äžã«ãããã¹ããšãStorybookã®ãã¹ããå®è¡ããŸãã
pnpm run test:unit
pnpm run test-watch:unit # ç£èŠã¢ãŒã
pnpm run test-ui:unit # Vitestã®UIã衚瀺
pnpm run test:unit --update # ã¹ãããã·ã§ããã®æŽæ°
Note
./tests/unit äžã®ãã¹ãã¯ããã¡ã€ã«åã«ãã£ãŠãã¹ããå®è¡ããç°å¢ãå€åããŸãã
.node.spec.tsïŒNode.js ç°å¢.browser.spec.tsïŒãã©ãŠã¶ç°å¢ïŒChromiumïŒ.spec.tsïŒãã©ãŠã¶ç°å¢ïŒhappy-domã«ãããšãã¥ã¬ãŒãïŒ
ãã©ãŠã¶ End to End ãã¹ã
Electron ã®æ©èœãäžèŠãªãUI ãé³å£°åæãªã©ã® End to End ãã¹ããå®è¡ããŸãã
Note
äžéšã®ãšã³ãžã³ã®èšå®ãæžãæãããã¹ãã¯ãCI(Github Actions)äžã§ã®ã¿å®è¡ãããããã«ãªã£ãŠããŸãã
pnpm run test:browser-e2e
pnpm run test-watch:browser-e2e # ç£èŠã¢ãŒã
pnpm run test-watch:browser-e2e --headed # ãã¹ãäžã® UI ã衚瀺
pnpm run test-ui:browser-e2e # Playwright ã® UI ã衚瀺
Playwright ã䜿çšããŠãããããã¹ããã¿ãŒã³ãçæããããšãã§ããŸãã ãã©ãŠã¶çãèµ·åããŠããç¶æ ã§ä»¥äžã®ã³ãã³ããå®è¡ããŠãã ããã
pnpm exec playwright codegen http://localhost:5173/ --viewport-size=1024,630
詳现㯠Playwright ããã¥ã¡ã³ãã® Test generator ãåç §ããŠãã ããã
Storybook ã® Visual Regression Testing
Storybook ã®ã³ã³ããŒãã³ãã®ã¹ã¯ãªãŒã³ã·ã§ãããæ¯èŒããŠã倿Žãããå Žåã¯å·®åã衚瀺ããŸãã
Note
ãã®ãã¹ã㯠Windows ã§ã®ã¿å®è¡ã§ããŸãã
pnpm run test:storybook-vrt
pnpm run test-watch:storybook-vrt # ç£èŠã¢ãŒã
pnpm run test-ui:storybook-vrt # Playwright ã® UI ã衚瀺
ã¹ã¯ãªãŒã³ã·ã§ããã®æŽæ°
ãã©ãŠã¶ End to End ãã¹ããš Storybook ã§ã¯ Visual Regression Testing ãè¡ã£ãŠããŸãã çŸåš VRT ãã¹ã㯠Windows ã®ã¿ã§è¡ã£ãŠããŸãã 以äžã®æé ã§ã¹ã¯ãªãŒã³ã·ã§ãããæŽæ°ã§ããŸãïŒ
Github Actions ã§æŽæ°ããå Žå
-
ãã©ãŒã¯ãããªããžããªã®èšå®ã§ GitHub Actions ãæå¹ã«ããŸãã
-
ãªããžããªã®èšå®ã® Actions > General > Workflow permissions ã§ Read and write permissions ãéžæããŸãã
-
[update snapshots]ãšããæååãã³ãããã¡ãã»ãŒãžã«å«ããŠã³ãããããŸããgit commit -m "UIãå€æŽ [update snapshots]" -
Github Workflow ãå®äºãããšãæŽæ°ãããã¹ã¯ãªãŒã³ã·ã§ãããã³ããããããŸãã
-
ãã«ããåŸã空ã³ããããããã·ã¥ããŠãã¹ããåå®è¡ããŸãã
git commit --allow-empty -m "ïŒãã¹ããåå®è¡ïŒ" git push
Note
ããŒã¯ã³ãäœæã㊠Secrets ã«è¿œå ããããšã§ãèªåçã«ãã¹ããåå®è¡ã§ããŸãã
- Fine-granted Tokens ã«ã¢ã¯ã»ã¹ããŸãã
- é©åœãªååãå
¥åãã
ãŠãŒã¶ãŒå/voicevoxãžã®ã¢ã¯ã»ã¹æš©ãäžãã Repository permissions ã® Contents ã§ Read and write ãéžæããŸããèšå®äŸ
- ããŒã¯ã³ãäœæããŠæååãã³ããŒããŸãã
ãŠãŒã¶ãŒå/voicevoxã®ãªããžããªã® Settings > Secrets and variables > Actions > New repository secret ãéããŸãã- ååã«
PUSH_TOKENãšå ¥åããå ã»ã©ã®æååã貌ãä»ã㊠Secrets ã远å ããŸãã
ããŒã«ã«ã§æŽæ°ããå Žå
ããŒã«ã« PC ã® OS ã«å¯Ÿå¿ãããã®ã®ã¿ãæŽæ°ãããŸãã
pnpm run test:browser-e2e --update-snapshots
Electron End to End ãã¹ã
Electron ã®æ©èœãå¿ èŠãªããšã³ãžã³èµ·åã»çµäºãªã©ãå«ãã End to End ãã¹ããå®è¡ããŸãã
pnpm run test:electron-e2e
pnpm run test-watch:electron-e2e # ç£èŠã¢ãŒã
äŸåã©ã€ãã©ãªã®ã©ã€ã»ã³ã¹æ å ±ã®çæ
äŸåã©ã€ãã©ãªã®ã©ã€ã»ã³ã¹æ å ±ã¯ Github Workflow ã§ã®ãã«ãæã«èªåçæãããŸãã以äžã®ã³ãã³ãã§çæã§ããŸãã
# get licenses.json from voicevox_engine as engine_licenses.json
pnpm run license:generate -o voicevox_licenses.json
pnpm run license:merge -o public/licenses.json -i engine_licenses.json -i voicevox_licenses.json
ã³ãŒããã©ãŒããã
ã³ãŒãã®ãã©ãŒããããæŽããŸãããã«ãªã¯ãšã¹ããéãåã«å®è¡ããŠãã ããã
pnpm run fmt
ãªã³ãïŒéçè§£æïŒ
ã³ãŒãã®éçè§£æãè¡ãããã°ãæªç¶ã«é²ããŸãããã«ãªã¯ãšã¹ããéãåã«å®è¡ããŠãã ããã
pnpm run lint
ãªã³ããè¡ããšãªããžããªã«ãŒãã«ãã£ãã·ã¥ãã¡ã€ã«.eslintcacheãäœãããŸãã
ESLintãããŒãžã§ã³ã¢ããããå Žåããèšå®ãå€ãã£ãå Žåããã£ãã·ã¥ãå£ããå Žåã¯ãã®ãã¡ã€ã«ãæ¶ããŠãã ããã
ã¿ã€ããã§ãã¯
typos ã䜿ã£ãŠã¿ã€ãã®ãã§ãã¯ãè¡ã£ãŠããŸãã
pnpm run typos
ã§ã¿ã€ããã§ãã¯ãè¡ããŸãã
ãã誀å€å®ããã§ãã¯ããé€å€ãã¹ããã¡ã€ã«ãããã°
èšå®ãã¡ã€ã«ã®èª¬æ ã«åŸã£ãŠ_typos.tomlãç·šéããŠãã ããã
åãã§ãã¯
TypeScript ã®åãã§ãã¯ãè¡ããŸãã
pnpm run typecheck
Markdownlint
Markdown ã®ææ³ãã§ãã¯ãè¡ããŸãã
pnpm run markdownlint
Shellcheck
ShellScript ã®ææ³ãã§ãã¯ãè¡ããŸãã ã€ã³ã¹ããŒã«æ¹æ³ã¯ ãã¡ã ãåç §ããŠãã ããã
shellcheck ./build/*.sh
OpenAPI generator
é³å£°åæãšã³ãžã³ãèµ·åããŠããç¶æ ã§ä»¥äžã®ã³ãã³ããå®è¡ããŠãã ããã
curl http://127.0.0.1:50021/openapi.json >openapi.json
pnpm exec openapi-generator-cli generate \
-i openapi.json \
-g typescript-fetch \
-o src/openapi/ \
--additional-properties "modelPropertyNaming=camelCase,supportsES6=true,withInterfaces=true,typescriptThreePlus=true"
pnpm run fmt
OpanAPI generator ã®ããŒãžã§ã³ã¢ãã
æ°ããããŒãžã§ã³ã®ç¢ºèªã»ã€ã³ã¹ããŒã«ã¯æ¬¡ã®ã³ãã³ãã§è¡ããŸãã
pnpm exec openapi-generator-cli version-manager list
VS Code ã§ã®ãããã°å®è¡
npm scripts ã® serve ã electron:serve ãªã©ã®éçºãã«ãäžã§ã¯ããã«ãã«äœ¿çšããŠãã vite ã§ sourcemap ãåºåããããããœãŒã¹ã³ãŒããšåºåãããã³ãŒãã®å¯Ÿå¿ä»ããè¡ãããŸãã
.vscode/launch.template.json ãã³ããŒã㊠.vscode/launch.json ãã
.vscode/tasks.template.json ãã³ããŒã㊠.vscode/tasks.json ãäœæããããšã§ã
éçºãã«ãã VS Code ããå®è¡ãããããã°ãå¯èœã«ããã¿ã¹ã¯ãæå¹ã«ãªããŸãã
ã©ã€ã»ã³ã¹
LGPL v3 ãšããœãŒã¹ã³ãŒãã®å
¬éãäžèŠãªå¥ã©ã€ã»ã³ã¹ã®ãã¥ã¢ã«ã©ã€ã»ã³ã¹ã§ãã
å¥ã©ã€ã»ã³ã¹ãååŸãããå Žåã¯ãããã«æ±ããŠãã ããã
X ã¢ã«ãŠã³ã: @hiho_karuta