
LinuxçVOICEVOXãã·ã§ã«ã ãã§äœ¿ã ïœLinuxã®åŒ·ã¿GUIäžèŠãçããïœ
ããã«ã¡ã¯Rcatã§ãã
ä»åã¯ç¡æã®é³å£°èªã¿äžããœããã§ããVOICEVOXã®Linuxçãã·ã§ã«ã ãã§äœ¿ã£ãŠãããŸãã
å
¬åŒãµã€ãã§ããŠã³ããŒããããšLinuxã®éžæè¢ããããã§ãããã¡ãã£ãšèª¿ã¹ããšã¿ããªguiã§äœ¿ã£ãŠãã¿ãããªãã§ãããã
ã§ããšããããããŠã³ããŒãããŠèªåãªãã«è©Šãããšãããã³ã³ãœãŒã«ã ãã§å©çšã§ããããšãåãããŸããã®ã§ãèšäºã«ãŸãšããããšæããŸãã
æåã«ãã¿ãã¬ãããšã以äžã®ãããªã³ãã³ããäœããŸãã
ã·ã§ã«ã§åŒæ°æå®ããŠèªã¿äžããŠãªãã€ã¬ã¯ãã§ä¿åããã¡ããSSHã§OKã
$ ./voicevox -t ããã«ãããããã£ãš > test.wavVOICEVOXãå©çšããäœåã«ã¯ä»¥äžã®ãããªãã®ããããŸãã
èå³ãããããŸãããæ¯éã芧ãã ããã
ã¯ããã«
å©çšèŠçŽ
æ å ±ãäœåã®æŽ»çšæã¯äºåã«å©çšèŠçŽãã確èªãã ããã
https://note.com/rcat999/n/nb6a601a36ef5
ã³ã¡ã³ãã«ã€ããŠ
å©çšèŠçŽã®ã¬ã€ãã©ã€ã³ã確èªã®äžã³ã¡ã³ãããŠãã ãã
æŠèŠ
ãã£ãã
ãã£ããã¯ããã¹ãçæAIã§æ
å ±ã®åæãèŠçŽãå
šèªåã§è¡ã£ãŠããã®ã§ããããããèªã¿äžããé³å£°ãã¡ã€ã«ãšããŠåºåã§ããæ©èœãã€ãããé¢çœãããããªãããšèããããšã§ãã
ãããã£ãã·ã¹ãã ã¯å
šãŠãLinuxã®ãµãŒããŒã§åããŠããŸãã
ãããã§ç޹ä»ããèšäºã§ã¯ãWindowsPCäžã§åããèšå®ãªã®ã§ãWindowsçãããŠã³ããŒãããŠèµ·åããã ããšããåæã§åãããŠããŸããã
ããããäœããã®ã·ã¹ãã ã«çµã¿èŸŒã¿ãããšãªããšãLinuxã§åããªããã°ãªããŸããã
軜ã調ã¹ããšãããguiç°å¢ã䜿ã£ãŠèµ·åãããšããå 容ããèŠã€ãããªãã£ãã®ã§èªåã§è²ã ãã£ãŠã¿ããšããæãã§ãã
ããŠã³ããŒãæ¹æ³
ããã±ãŒãžãããŠã³ããŒããã
å
¬åŒãµã€ãã®ããŠã³ããŒããã¿ã³ãæŒããŠLinuxãéžæããŸãã
ãã®æãCPUãªã³ãªãŒã®ããŒãžã§ã³ãéžã¶ããšã§ããã®äººã®ããã±ãŒãžã«tarãå¢ããŸãã®ã§ãã¡ãã䜿ããŸãã
ããŠã³ããŒããã¿ã³ãæŒããšããŠã³ããŒããå§ãŸããŸãããããŠã³ããŒããªã³ã¯ã®ååŸã¯ã§ããŸããã§ããã®ã§ãäžæŠããŠã³ããŒãããŠãããµãŒããŒã«è»¢éããããšã«ããŸããã
(ãããã°ã³ã³ãœãŒã«ãããªã³ã¯ãç¹å®ããŠwgetããããããããŸãããã)

è§£åãã
以äžã®ãããªæãã§ã³ãã³ããå ¥åããŠè§£åããŸãã
$tar -zxvf voicevox-linux-cpu-0.21.1.tar.gz
$ ls
VOICEVOX voicevox-linux-cpu-0.21.1.tar.gzããŒã¿ã確èªãã
ããŒã¿ãå±éãããŠããŸãã®ã§ãäžèº«ãèŠãŠã¿ãŸãããã
ãããšèŠãæããæ¡åŒµåã®ãªãäžçªäžã®ããŒã¿ãå®è¡ãã¡ã€ã«ã£ãœãã§ããã

ã¡ãªã¿ã«ããå®è¡ãããšä»¥äžã®ããã«ãªããŸãã
guiçã®èª¬æã§XãµãŒããŒãšããguiç°å¢ãäœãšããšãã説æãèŠãæ°ãããã®ã§ãguiã§èµ·åã§ããªããã³ã©!ãšèšãããŠããæãã§ããããïŒ
ãšããããšã¯Windowsçã§ZIPã§ããŠã³ããŒãããŠèµ·åããæãšåããããªç¶æ
ã§ããã
$ ./voicevox
Environment: production, appData: voicevox
configMigration014: /home/rcat/.config/voicevox-cpu/config.json not exists, do nothing
[348913:1110/220527.523549:ERROR:ozone_platform_x11.cc(244)] Missing X server or $DISPLAY
[348913:1110/220527.523590:ERROR:env.cc(258)] The platform failed to initialize. Exiting.
Segmentation fault (ã³ã¢ãã³ã)æ°ãåãçŽããŠå°ãããŒã¿ãæŒã£ãŠã¿ãŸãã
次ã¯ãšã³ãžã³ãšãããšããã«å
¥ã£ãŠãããŸãã
ãŸããäžçªäžã«æ¡åŒµåã®ãªããã¡ã€ã«ããããŸããããããååããããŠãããå®è¡ãããšèšãããŠããŸãããããå®è¡ããŸãããã

$ ./run
Warning: cpu_num_threads is set to 0. Setting it to half of the logical cores.
Info: Loading core 0.15.5.
reading /home/rcat/.local/share/voicevox-engine/user.dict_csv-94180179-fdad-4d3b-964f-70dc1a26b9eb.tmp ... 76
emitting double-array: 100% |###########################################|
done!
INFO: Started server process [352241]
INFO: Waiting for application startup.
INFO: Application startup complete.
INFO: Uvicorn running on http://localhost:50021 (Press CTRL+C to quit)ãã£ãš! èµ·åããŸããããçãéãã§ããããã§å©çšå¯èœã§ãã
ãããã©ããã£ãŠäœ¿ãã®?ã£ãŠãã話ã§ããã以äžã®èšäºã§VOICEVOXã®APIã䜿ã£ãé³å£°çæãããŠããŸãã
ããã°ã©ãã³ã°çãªè©±ã«ãªãã®ã§é£ãããããããŸãããããã®æ¹æ³ã䜿ã£ãŠã³ã³ãœãŒã«ããèªã¿äžããè¡ããŸãã
æ¬åœã«åããŠããã®ãã©ããã確èªãããå Žåã¯ã以äžã®ããã«ããã®ãæã£åãæ©ãã§ãã
å
ã»ã©ã³ã³ãœãŒã«ã®äžçªäžã«URLãæžããŠãããŸããããïŒããã¯APIã®ã¢ãã¬ã¹ãšãªããŸãã
ããã«å¯ŸããŠãã£ã©ã¯ã¿ãŒäžèЧããã ãããšèšã£ãŠã¿ãŸããããURLãäžçªåŸãã«"speakers"ããã£ã€ããã ãã§ãã
$ curl http://localhost:50021/speakers
[{"name":"ååœããã","speaker_uuid":"7ffcb7ce-00ec-4bdc-82cd-45a8889e43ff","styles":[{"name":"ããŒãã«","id":2,"type":"talk"},{"name":"ããŸããŸ","id":0,"type":"talk"},{"name":"ãã³ãã³","id":6,"type":"talk"},{"name":"ã»ã¯ã·ãŒ","id":4,"type":"talk"},{"name":"ãããã","id":36,"type":"talk"},{"name":"ããœããœ","id":37,"type":"talk"}],"version":"0.15.5","supported_features":{"permitted_synthesis_morphing":"SELF_ONLY"}},{"name":"ããã ãã","speaker_uuid":"388f246b-8c41-4ac1-8e2d-5d79f3ff56d9","styles":[{"name":"ããŒãã«","id":3,"type":"talk"},{"name":"ããŸããŸ","id":1,"type":"talk"},{"name":"ãã³ãã³","id":7,"type":"talk"},{"name":"ã»ã¯ã·ãŒ","id":5,"type":"talk"},{"name":"ãããã","id":22,"type":"talk"},{"name":"ããœããœ","id":38,"type":"talk"},{"name":"ãããã","id":75,"type":"talk"},{"name":"ãªã¿ã ã","id":76,"type":"talk"}],"version":"0.15.5","supported_features":{"permitted_synthesis_morphing":"SELF_ONLY"}},{"name":"æ¥æ¥éšã€ãã","speaker_uuid":"35b2c544-660e-401e-b503-0e14c635303a","styles":[{"name":"ããŒãã«","id":8,"type":"talk"}],"version":"0.15.5","supported_features":{"permitted_synthesis_morphing":"ALL"}},...以äžç¥ãããªæãã§ãã£ã©ã¯ã¿ãŒäžèЧãè¿ã£ãŠããã°ç¡äºèµ·åããŠãããšãã蚌æã«ãªããŸãã
詊ãã«é³å£°åæãããªãçç±ã¯2ã¹ããããå¿
èŠã§ãã³ã³ãœãŒã«ã«ææã¡ããŠãã£ãŠããããã¬ãã«ã§ã¯ãªãããã§ãã
ã¡ãªã¿ã«ã¢ã¯ã»ã¹ããç¬éã以äžã®ããã«ã¢ã¯ã»ã¹ãã°ãå¢ããŠãŸããã

ã·ã§ã«ã§æè»œã«èªã¿äžããã
ããŠããããŸã§ã§Linuxçã®VOICEVOXã³ã³ãœãŒã«äžã§èµ·åããããšãã§ããŸããã
åŸã¯ããã¯ã°ã©ãŠã³ãã«ãããªããsystremdã«å
¥ãããªãããã°ã·ã§ã«ã¯éããŠã倧äžå€«ã§ãã
ããã§æ¬é¡ã®é³å£°èªã¿äžãã§ããã
ãŸãã¯å®éã«ãã£ãŠãã説æã«ç§»ããŸãããã
以äžã®èšäºã§äœæããããã°ã©ã ãæµçšããŠãã¹ãé³å£°ãçæããŠã¿ãŸãã
èªã¿äžããã§ãããã®ãã¹ã
äžèšã§é
åžããŠããããŒã¿ã®ãã¡ã"voicevox.py"ã ããã³ããŒããŠæã£ãŠããŸããã
ãã®ã¢ãžã¥ãŒã«ãã€ã³ããŒãããããšã§ãPythonããèªã¿äžããè¡ãããšãã§ããŸãã
ãµã³ãã«ã³ãŒãã¯ä»¥äžã®éãã§ãã
$ python3
Python 3.10.12 (main, Sep 11 2024, 15:47:36) [GCC 11.4.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import voicevox
>>> v = voicevox.VOICEVOX()
>>> v.CreateWave("ããã¯ãšã£ãŠãããããã§ã","test.wav")
{'path': 'test.wav', 'length': 1.6106666666666667, 'text': 'ããã¯ãšã£ãŠãããããã§ã', 'diff': -1}
>>>
$ ls
VOICEVOX __pycache__ test.wav voicevox-linux-cpu-0.21.1.tar.gz voicevox.py3ç§çšåºŠã§èªã¿äžããå®äºããŸããã(CPUã¯N100)
èªã¿äžããããµã³ãã«ã¯ä»¥äžã®éãã§ãã
é³å£°: VOICEVOXãæ¥æ¥éšã€ããã
ã¡ãªã¿ã«ç§ãäžçªãã䜿ãã®ãæ¥æ¥éšã€ãããªã®ã§ããã£ã©ã¯ã¿ãŒãçç¥ãããšæ¥æ¥éšã€ããã§èªã¿äžããããŸãã
ã¡ãªã¿ã«ãã®æã®ãã°ã¯ä»¥äžã®éãã§ãã
2ã€ã®APIã«ã¢ã¯ã»ã¹ããŠããããšãããããŸãã
INFO: 127.0.0.1:55092 - "GET / HTTP/1.1" 200 OK
INFO: 127.0.0.1:37030 - "POST /audio_query?text=%E3%81%AD%E3%81%93%E3%81%AF%E3%81%A8%E3%81%A3%E3%81%A6%E3%82%82%E3%81%8B%E3%82%8F%E3%81%84%E3%81%84%E3%81%A7%E3%81%99&speaker=8 HTTP/1.1" 200 OK
INFO: 127.0.0.1:37038 - "POST /synthesis?speaker=8 HTTP/1.1" 200 OKèªã¿äžãã³ãã³ã
ããŠãã·ã§ã«ããèªã¿äžããã§ããããšãããã£ããšããã§ãæè»œã«äœ¿ããæ¹æ³ãèããŠãããŸãããã
ãŸãã¯ãããªãå®æåœ¢ã玹ä»ããŸãã
$ ./voicevox -t ããã«ãããããã£ãš > test.wav
$ ls
VOICEVOX test.wav voicevox.py voicevoxtalk.log
__pycache__ voicevox-linux-cpu-0.21.1.tar.gz voicevox voicevoxtalk.pyãã®äžã«äœæãããŠãã"test.wav"ãåçãããšèªã¿äžããããŠããããšãåãããŸãã
èªã¿äžãã³ãã³ãã®è§£èª¬
ã³ãã³ãåããã«ããããæ°ãã2ã€ã®ããŒã¿ãäœæããŸããã

voicevoxtalk.py
å ã»ã©ã®ãã¹ãã§è¡ã£ãèªã¿äžããåçºã§è¡ãã¹ã¯ãªããã
ã³ãã³ãå ¥åã«æé©åãããŠãããvoicevox
voicevoxtalk.pyãåŒã³åºãããã®ã·ã§ã«ã¹ã¯ãªããã
ãããåãŸããããšã§èªåã§"python3"ã³ãã³ããå ¥åããªããŠãè¯ããªãããªãªãžãã«ã³ãã³ãã£ãœããªãã
ã³ãã³ããšããŠåŒã³åºãã®ã¯"voicevox"ã«ãªããŸãã
ããã«å¯ŸããŠèªã¿äžãããããã¹ãããã£ã©ã¯ã¿ãŒãã¹ããŒããæå®ããããšã§èªã¿äžããè¡ããŸãã
-hãæå®ããããšã§ãã«ãã確èªã§ããŸãã
ç§ã®æžãæ¹ã®ããããŒãšã©ã€ãã©ãªã®å©çšèª¬æãæ··ãã£ãŠãã®ã§ãã¡ãã£ãšå€ãªæãã
$ ./voicevox -h
usage:
#==============================================================================#
# VOICEVOX Linuxã·ã§ã«èªã¿äžãçšã³ãã³ã #
#==============================================================================#
(C) 2024 Rcat999
note: https://note.com/rcat999/
Twtter : @Rcat999
YouTube: Rcat999
+--------------æŠèŠ--------------+
ã·ã§ã«ããVOICEVOXã䜿ãããã®ã³ãã³ã
+--------------å©çšèŠçŽ--------------+
äžèšã°ããŒãã«ã«ãŒã«ã«åããŸã
https://note.com/rcat999/n/nb6a601a36ef5
+--------------å±¥æŽ--------------+
Ver 1.0.0 2024/11/10 åç
options:
-h, --help show this help message and exit
-t TEXT, --text TEXT èªã¿äžããããã¹ããæå®
-c CHARACTER, --character CHARACTER
èªã¿äžãããã£ã©ã¯ã¿ãŒIDãæå®
-s SPEED, --speed SPEED
èªã¿äžãé床ãæå®ãã®ã¹ã¯ãªããã¯çæããé³å£°ãæšæºåºåã§è¿ããŠããŸãããã®ããããªãã€ã¬ã¯ãããŠä¿åãããããã€ãã§å¥ã®ã³ãã³ãã«æž¡ããŠãã ããã
ã¡ãªã¿ã«ããã ããã§0.5åéã®å Žåã¯ä»¥äžã«ãªããŸãã
$ ./voicevox -c 3 -s 0.5 -t ããã«ãããããã£ãš > zunda.wavã³ãã³ãã®äžèº«
voicevoxã®äžèº«ã¯ã·ã§ã«ã¹ã¯ãªããã§PythonãåŒã³åºããŠããŸãã

Pythonã®æ¹ã®äžèº«ã¯ä»¥äžã®ããã«ãªã£ãŠããŸãã
å
ã»ã©ã³ã³ãœãŒã«ã§å
¥åãããã®ããã³ãã³ããšããŠäœ¿ãããããããã®ã«ãªããŸãã

次å
次åã¯èªäœã®ã·ã¹ãã ããç°¡åã«äœ¿ããVOICEVOXäžéAPIãµãŒããŒäœæããŸããã
å
¬åŒã®APIã¯è€éã§ãããäžéãµãŒããŒãããŸããããšã§GETã®ãã©ã¡ãŒã¿ã«æååãå
¥ããã ãã§ç°¡åã«é³å£°ãèªã¿äžãã§ããæ§ã
ãªçšéã§æŽ»çšãã§ããŸãã
é åžæ å ±
é åžURL
以äžã®URLããé
åžããŠããŸãã
å©çšèŠçŽã«åæã®äžãå©çšãã ããã