å æ¥ããã¯ãªããèªåã§çæããŠèªã¿äžããã¢ããªãããã ãã©ãŒããäœã£ãŠã¿ãã®ã§ããã®éçºãã€ã³ãã«ã€ããŠè§£èª¬ããŸããäž»ã«OpenAI APIãšVOICEVOXã®æ©èœãå©çšããŠããŸãã
ããã ãã©ãŒïŒãããã©ïŒ
ããã ãã©ãŒã¯ãæ±åå¿æŽãã£ã©ã¯ã¿ãŒæ±åããåã®é¢é£ãã£ã©ã¯ã¿ãŒã§ããããã ãããããã®å Žã§çæãããæ§ã ãªããã¯ãªãããèªã¿äžããŠãããã¢ããªã±ãŒã·ã§ã³ã§ãã
以äžã®ãªããžããªã§ãœãŒã¹ã³ãŒããšãã«ãæžã¿PC/Androidã¢ããªãå ¬éããŠããŸããUnityãããžã§ã¯ãã§ãã
以äžã®ãããªããã¯ãªãããäœããŸãã
ãªãäœã£ãïŒ
倧ããªã¢ãããŒã·ã§ã³ãšããŠã¯ä»¥äžã§ããã
- OpenAI APIã䜿ã£ãŠäœãäœãããã£ã
- èåç¡çšœãªã¹ããŒãªãŒãAIã«èããŠãããã®ãçµæ§é¢çœã
- ããã ããããããããããã¹ãããã
ä»åã¯Generative AIãå©çšããã·ã¹ãã ãäœãéã®åæã®ãããªãã®ããèªåèªèº«ã§æŽã¿ãããšããæå³ã倧ããã§ããããã³ããå«ããŠå 容èªäœã¯é³è ã§ãããéã¹ã段éãŸã§äœã£ãŠã¿ãŠäœãããã®ç¥èŠãåŸãŠãå ±æããããšã«æçŸ©ã眮ããŸããã
以äžè§£èª¬ãç¶ããŸãã
ã¹ããŒãªãŒçæããã³ãã
ãããã©ã®äžæ žããžãã¯ã§ããããã¯ãªããçæéšã¯StoryTitleGeneratorãšStoryContentsGeneratorã®2ã€ã§æ§æãããŠããŸãã
åæ¹ãšã以äžã®systemããã³ãããåé ã«æå®ããŠããŸãã
ããªãã¯åäŸåãã®ç©èªã®ããäœå®¶ã§ããæ¥œããæè²çãªç©èªãäœãäœæ¥ãã¢ã·ã¹ãããŠãã ããã
ãã¯ãªãã¿ã€ãã«åè£ãªã¹ãã®çæ
ãã¯ãªãã¿ã€ãã«åè£ãªã¹ãã®çæã¯ä»¥äžã®StoryTitleGeneratorãæ ã£ãŠããŸãã
ããã³ããã¯ä»¥äžã§ãéåžžã«ã·ã³ãã«ã§ããåºåã¯çŽæ¥json圢åŒãæå®ããŠããã®ã§ããã®ãŸãŸããŒã¹ããã ãã§ããïŒstringã®ãªã¹ããæå®ããŠãããã£ãã§ããäžå¿æ§é åããŠããŸããïŒ
åäŸåãã®ãªãªãžãã«ç©èªã®ã¿ã€ãã«ã{NUMBER}åèããŠãã ããã
## å¶çŽäºé
- ã¿ã€ãã«ã¯15æå以å
ã«ããããš
- æ¥æ¬èªã®ã¿ã€ãã«ã«ããããš
- ã¿ã€ãã«ã«ã¯æ¹è¡ãå«ããªãããš
- 以äžã®json圢åŒã®ãªã¹ãã§è¿çããjson以å€ã®äŒè©±æãã³ã¡ã³ããè£è¶³ãªã©ã®æ
å ±ã¯äžåè¿çããªãããš
## åºåãã©ãŒããã
[
{"title": "Title 1"},
{"title": "Title 2"},
{"title": "Title 3"},
]
temperatureã¯ããã©ã«ãã®1ã§ãããããã ãã§ãæ¯åç°ãªããªã¹ããè¿ããŠããŸãã
ããã³ããã§ã¯jsonã®åºåäŸããªããšãªãæç€ºããŠããã ãã§ãããåæ°ãèžãŸããŠããªãå®å®ããŠã¬ã¹ãã³ã¹ãããŸããããã§ããã
ãã¯ãªãã³ã³ãã³ãã®çæ(v1)
ãã¯ãªãã®æç« èªäœã®çæã¯ä»¥äžã®StoryContentsGeneratorãæ åœããŠããŸããv1ãšãããšããçŸç¶ã¯ãå°ãæ¹è¯ãããã®ã䜿ã£ãŠããŸããããã¯åŸè¿°ããŸãã
ããã³ããã¯ä»¥äžã®ããã«ãªã£ãŠããŸãã
ã{TITLE}ããšããåäŸåãã®ç©èªã®å
容ãèããŠãã ããã
## åºåãã©ãŒããã
{emotion}: {content}
{emotion}: {content}
{emotion}: {content}
## åºåãã©ãŒãããã®è©³çް
- {content}ã¯ç©èªã®æç« ã§ã
- {emotion}ã¯{content}ã®ææ
ãè¡šãæ°åã§ã以äžã®Emotion NumberããéžæããŸã
### Emotion Number
0 -> æ®é
1 -> åã³
2 -> é©ã
3 -> æ²ãã¿
4 -> æã
## å¶çŽäºé
- {PREFERRED_LENGTH}è¡ä»¥äžã®ç©èªã«ããããš
- 1è¡ã¯50æå以å
ã«ããããš
- æç« ã®èªå°Ÿã¯ãã§ãããŸããå£èª¿ã«ããããš
- ãã©ãŒããã以å€ã®äŒè©±æãã³ã¡ã³ããè£è¶³ãªã©ã®æ
å ±ã¯äžåè¿çããªãããš
## ç©èªã®æ§æã«ã€ããŠ
- æœè±¡çãªè¡šçŸã¯é¿ããå
·äœçãªç©èªã®å
容ã«ããããš
- ç©èªã«èµ·æ¿è»¢çµã®èµ·äŒãã€ããããš
## åºåã®äŸ
0: æã
ãããšããã«ããããããšãå©ãããããŸããã
0: ãããããã¯èåãã«ããå©ããã¯å·ã«æŽæ¿¯ã«è¡ããŸããã
2: ãå©ãããæŽæ¿¯ãããŠãããšãå·äžãã倧ããªæ¡ãæµããŠããŸããã
1: ãå©ããã¯ãã®æ¡ãå®¶ã«æã¡åž°ããŸããã
ãã¡ãã¯ã¿ã€ãã«ã®æãšéã£ãŠãå°ãè€éã§ãã
ãåºåãã©ãŒãããããjson圢åŒã§æå®ããªãã®ã¯é次åŠçãããããã§ãããã¡ããåŸè¿°ããŸãã
ãŸããæç« ã«å¿ããŠãææ ãã«å¯Ÿå¿ããæ°åãæå®ããŠããã£ãŠããŸãããã®æ°åãEmotionãšããenumã«ãããã³ã°ããããã ããã®è¡šæ ãå€åãããŠããŸãããšãããããç°¡åã«5åã®ææ ãçšæããŸãããã粟床ã¯ãŸããŸããšããæãã§ããã
æåŸã«åºåã®äŸãæç€ºããŠããŸãããã®ã»ã¯ã·ã§ã³ããªããšåºåãå®å®ããªãå ŽåããããŸããã
ç·ããŠã§ãããgpt-3.5-turboã¢ãã«ã§ã¯ãç©èªã®é·ãã®å®å®æå«ããŠå°ãåºåãããããã§ããããªãããã©ãŠã¶ã§GPT-4ã§åæ§ã®ããã³ããã詊ãããšãããç©èªã®é·ããå®å®æèžãŸããŠããªã粟床ã¯äžãã£ãŠããããã«ã¯æããŸããã
ãã¯ãªãã³ã³ãã³ãã®çæ(v2)
äžèšã®v1ã§ããããªãã«åºåãã§ããŠããã®ã§ãããv0.1.0ã§ã¯ä»¥äžã®StepByStepContentsGeneratorã䜿ã£ãŠããŸãã
ããã³ããã¯ä»¥äžã§ãå€å°å€æŽç¹ããããŸãã
ã{TITLE}ããšããåäŸåãã®ç©èªã®å
容ãèããŠãã ããã
## åºåãã©ãŒããã
{"content": <content>, "emotion": <emotion>}
{"content": <content>, "emotion": <emotion>}
{"content": <content>, "emotion": <emotion>}
## åºåãã©ãŒãããã®è©³çް
- <content>ã¯ç©èªã®æç« ã§ã
- <emotion>ã¯<content>ã®ææ
ãè¡šãæ°åã§ã以äžã®Emotion NumberããéžæããŸã
### Emotion Number
0 -> æ®é
1 -> åã³
2 -> é©ã
3 -> æ²ãã¿
4 -> æã
## å¶çŽäºé
- <content>ã«æ¹è¡ãå«ããªãããš
- <content>ã¯50æå以å
ã«ããããš
- æç« ã®èªå°Ÿã¯ãã§ãã»ãŸããå£èª¿ã«ããããš
- 1è¡ãã€json圢åŒã§åºåãããã以å€ã®äŒè©±æãã³ã¡ã³ããè£è¶³ãªã©ã®æ
å ±ã¯äžåè¿çããªãããš
## ç©èªã®æ§æã«ã€ããŠ
- æœè±¡çãªè¡šçŸã¯é¿ããå
·äœçãªå
容ã«ããããš
- ç©èªã«èµ·æ¿è»¢çµã®èµ·äŒãã€ããããš
## åºåã®äŸ
{"content": "æã
ãããšããã«ããããããšãå©ãããããŸããã", "emotion": 0}
{"content": "ãããããã¯èåãã«ããå©ããã¯å·ã«æŽæ¿¯ã«è¡ããŸããã" , "emotion": 0}
{"content": "ãå©ãããæŽæ¿¯ãããŠãããšãå·äžãã倧ããªæ¡ãæµããŠããŸããã" , "emotion": 2}
{"content": "ãå©ããã¯ãã®æ¡ãå®¶ã«æã¡åž°ããŸããã", "emotion": 1}
v1ããã®å€æŽç¹ãšããŠã¯ã1è¡ã¥ã€ã®jsonåºåã«å€ããç¹ã§ããããããv1ã§ã¯é床ã皌ãæå³ã§ãäœèšãªæåååºããªããããªãã©ãŒãããã«ããŠããŸããããéçºäžã«ååãªé床ãåºããããªããšãããã£ãã®ã§ããè¡ããšãã®jsonã«å€æŽããŸããã
ãŸããããã¯å®å šã«ãã¥ãŒãªã¹ãã£ãã¯ã§æ§èœã®è©äŸ¡ãããŠãªãã§ãããemotion=>contentã®äžŠã³ãããcontent=>emotionã®é ã«å€æŽããŸãããLLMã§éæ¬¡ãæ¬¡ã®æååãæšè«ãããŠãããšãªããšããã®ãããªé ã®æ¹ãèªç¶ã«ãªããããã®ã§ã¯ïŒãšèããããã§ãã
ããã«ã倧ããç¹ãšããŠãèµ·æ¿è»¢çµã®ããŒãããšã«ãé æ¬¡åºåããŠãããããã«ããŸãããããã«ããç©èªã®é·ããæ§æã®ã³ã³ãããŒã«ããããããªã£ãããã«æããŸãïŒãã¡ããè©äŸ¡ã¯ç¹ã«ããŠããŸããïŒã以äžã®ãããªãããŒã®ã€ã¡ãŒãžã§ãã
user:
ããäžèšã®ã«ãŒã«ã«åŸã£ãŠããŸãã¯èµ·æ¿è»¢çµã®ãèµ·ãã®éšåã2è¡ã§è¿çããŠãã ãã
assistant:
ãã{"conent": "ããæ¥æ£®ã®äžãç·ã®åã¯ã¢ã©ã€ã°ãããã«åºäŒããŸããã", "emotion": 0}
ãã{"conent": "ã¢ã©ã€ã°ãããã¯å·ã§éãæã£ãŠããŸãã", "emotion": 0}
user:
ããæ¬¡ã«ãèµ·æ¿è»¢çµã®ãæ¿ãã®éšåã3è¡ã§è¿çããŠãã ãã
assistant:
ãã{"conent": "ç·ã®åã¯ã¢ã©ã€ã°ãããã«è©±ãããã圌ãéãæã£ãŠããã®ãæäŒããŸãã", "emotion": 1}
ãã{"conent": "éãæãããã®å·çžã®éå
·ãæè¡ã«ã€ããŠãã¢ã©ã€ã°ãããã¯ç·ã®åã«æããŠãããŸããã", "emotion": 0}
ãã{"conent": "ç·ã®åã¯ã¢ã©ã€ã°ããããšéãæã£ãŠã楜ããæéãéãããŸããã", "emotion": 1}
...
ïŒä»æããšãv2ã®jsonã®æ§é åã«ããemotionãæ°åã«ãããã³ã°ããŠãããå¿ èŠã¯ç¡ããªã£ãæ°ãããŸããããã®ã¿ã¹ã¯è² è·ãæžãããšãŸãå€åãããããïŒ
ããã³ããã€ã³ãžã§ã¯ã·ã§ã³å¯Ÿå¿ã«ã€ããŠ
ãŠãŒã¶ãŒã®èªç±å ¥åãããã®ã§å°ãèããŸããããæåæ°ã®å¶éããããã€ã以äžã®ããã«ããã§æ¬ãã ãã§ãããããªãã«é²ãããã ã£ãã®ã§ãç¹ã«å¯Ÿå¿ã¯ããŠããŸããã
ã{TITLE}ã
ãŸããåºåçµæã¯ãã¡ããæå®ããæ§é ã«äžåºŠããŒã¹ããã®ã§ãå€ãªã¬ã¹ãã³ã¹ã¯ãšã©ãŒã«ãªãçã¯é«ããã§ããããŸããã
ãã®ãããªèªç±å ¥åããããšããã¯ãã©ã³ãã ãªããã·ã¥å€ãªã©ã§æ¬ããªã©ãããšãç°¡åãã€ããã»ãã¥ã¢ã«ãªãããã§ã¯ãããŸãã
VOICEVOXã§ã®ãã€ã¹çæ
é³å£°ã®çæã«ã¯VOICEVOXãå©çšããŠããŸãã
ãã¡ãã®æ¡çšçç±ã¯ããã ããã®ãã€ã¹ãå©çšã§ãããšããç¹ãäž»ã§ããããšã¯HTTPéä¿¡çµç±ã§ç°¡åã«ãšã³ãžã³ãšé£æºã§ããç¹ãè¯ãã£ãã§ããä»ã®ãã€ã¹çæç³»ã®ã·ã¹ãã ã¯ä»åã¯èª¿æ»ã»æ¯èŒã¯ããŠããŸããã
ãã¡ãã¯ãéœåãçŽäœæ²æããã£ãŠã2ã€ã®é£æºæ¹æ³ãçšæããŸããã
ããŒã«ã«ã®VOICEVOXãšã³ãžã³ãšã®é£æº
PCããŒã«ã«ã®VOICEVOXãšã®é£æºã«ã¯ã以äžã®UnityããVOICEVOX Engineãšé£æºã§ããèªäœã©ã€ãã©ãªã䜿ã£ãŠããŸãã
ãŸããèªå® ã§ã¯ä»¥äžã®èšäºã®ããã«VOICEVOX EngineãµãŒããŒãå¥PCã«ç«ãŠãŠå©çšããŠããŸãã
ãã ããäžèšã©ã€ãã©ãªã¯çŸæç¹ã§é³å£°ã®çæãšåçã®ã³ã³ããŒãã³ããå¯ã«ãªã£ãŠãããããéšåçã«äœ¿ããããåŸãªããªããŸããïŒã©ã€ãã©ãªèšèšæãã責åå®çŸ©ãNGã ãšæã£ãŠãããããã¯ããç°¡åããåªå ããããã§å®éã€ã±ãŠãªãã£ãïŒã
WEBçVOICEVOX APIã®å©çš
æçµçã«ã¢ããªãé åžããã¢ãã€ã«ã§ãéãã§ãããããšãèãããšãVOICEVOX Engineã®ãµãŒããŒãç¬èªã«ç«ãŠãŠãããã®ã¯ããŒãã«ãé«ãããããŸããïŒVOICEVOXã¢ããªãPCã§åã«èµ·åããŠããã ãã§ã¯å¥ãã¹ãããã®ã¢ã¯ã»ã¹ã¯ã§ããªããïŒã
ãã®å¯Ÿå¿ãšããŠãWEBçã®VOICEVOX APIãå©çšãããŠãããããšã«ããŸããããã¡ãã¯ãããªãã·ã³ãã«ã«å©çšãã§ããéåžžã«å©ãããŸããã
ç°¡åã§ãã飿ºã³ãŒãã¯ä»¥äžã«ãªããŸãã
çŸç¶ã¯OpenAIã®API Keyãšåæ§ã«ãã¢ããªå©çšè ã®ãŠãŒã¶ãŒã®æ¹ã«API Keyã®ååŸããé¡ãããŠããŸãã
ã¹ããŒãªãŒçæãšåçéå§åŸ ã¡æéãžã®å¯Ÿå¿
ChatGPT APIãšVOICEVOXã§ã®ã³ã³ãã³ãçæåŠçã«ã¯æéãããããŸããäžçªæåã«è©Šããæã¯ããã¯ãªãã®çæãChatGPT APIã«ãªã¯ãšã¹ãããŠãããããŒã¿ãåä¿¡ããŠåçãéå§ãããŸã§ã«30ç§ã»ã©ããããŸããããã®æéã¯ããããã«ãŠãŒã¶ãŒã¯åŸ ãŠãªãã§ãã
ãšã¯ããããã¯ãªãã¯å€§äœ1å30ç§ã»ã©ãç®å®ã«ããŠãããããå šéšãäžæ°ã«åºåããŠããåçãéå§ããã®ã§ã¯ãªãã鿬¡çæããªããåçããã°ãããšãã話ã§ãã
ãããå®çŸããããã«ãChat Completion APIã®streamïŒServer-Sent Events)ãªãã·ã§ã³ãå©çšããããšã«ããŸããããã¡ãã¯ä»¥äžã®èšäºã§è§£èª¬ããŠãŸãã
ãã®æ©èœãå©çšããŠãã¿ã€ãã«ã³ãŒã«è¡šç€ºã§åé ã³ã³ãã³ãçæã®åŸ ã¡æéã誀éåãã€ã€ã以äžã®ã³ãŒãã®ããã«ãã¯ãªãã®çæãåçãšäžŠè¡ããŠè¡ããŸãã
ããã ããç«ã¡çµµ
ç«ã¡çµµçŽ æã¯åæ¬ã¢ãã«ããã®ä»¥äžã®çŽ æãå©çšãããŠããã£ãŠããŸããããããïŒ
PSBã®ã€ã³ããŒã
ããã ããç«ã¡çµµã¯psdã§é åžããããŸããããã¡ãã¯Unityã®PSD Importerãå©çšããŠUnityã«åã蟌ãã§ããŸãããã ãã¬ã€ã€ãŒåãæ¥æ¬èªã§æååãããŠããŸã£ãã®ã§ãæäœæ¥ã§è±æ°å衚èšã«ããŠpsb圢åŒã«å€æããŸããã
ã€ã³ããŒãåŸã¯ãã®ããã«ã¬ã€ã€ãŒã®æ å ±ãããŒãã®äœçœ®é¢ä¿ãªã©èžãŸããŠãã¢ãã©ã¹åãã¢ã»ããåããããã®ã§Unityã§å²ãšæ±ããããã£ãã§ãã
衚æ ãšå£ãã¯
衚æ ã¯ã¢ãã¡ãŒã·ã§ã³ã¯ãªããã§åããŒãããªã³ãªãããŠããŸããå£ãã¯ã¯ãªããã·ã³ã¯ãšãèããé©åœã«è€æ°ã®ã¹ãã©ã€ããåãæ¿ããŠããã ãã§ãã
å£ãã¯ã¢ãã¡ã¯è¡šæ ã«é¢é£ãã1ã¯ãªããã ãäœããAnimatorã§å¥ã¬ã€ã€ãŒãšããŠèšå®ããŠããŸããããã§ã衚æ ãç°¡åã«å¢ãããŸãã
æ£çŽãã®psbã¢ã»ããã®åãåããå£ãã¯åšãã¯ããŸã詳ãããªãããã£ãšè¯ãæ¹æ³ããããããããŸããã
ã¢ããªã®ã¢ãŒããã¯ãã£ã®è©±
å ¬éã«ãããã³ãŒããšäŸåããããªãã«æŽçããŸãããã¢ããªãšããŠãšã©ãŒãã³ããªã³ã°ãããã¯ããŒå¯Ÿå¿ããã¿ã³é³ãªã©æ©èœãè¶³ããªããšãããå€ã ãããŸãããçŸæç¹ã®æäœéã®æ§é ã«ãªã£ãŠãããšã¯æããŸããå°ããã®ã²ãŒã ãã¢ããªãäœãéã¯åèã«ãªããããããŸããã
æ£çŽãç°¡æçã§ã¯ãããŸãããã«ã¹ã¯ã©ããã§Viewãç»é¢é·ç§»ã®ä»çµã¿ãªã©ãäœãã®ãäžçªæéã§ããã
ãã®å ã®ã¢ããªãšããŠã®æè¡çéæ
åé ã«è¿°ã¹ããšãããä»åã¯éçºã®ææãåŸãŠãœãŒã¹ã³ãŒãã®å ¬éïŒè§£èª¬ã§ç®çéæã§ãã
ãã ãããã®ãããªã¢ããªããµãŒãã¹ãšããŠæäŸããå Žåã¯ãæè¡çã«ã¯ä»¥äžã®èª²é¡ãããããã«æããŸããïŒæš©å©ãšåçé¢ä¿é€ãïŒã
1ã€ç®ã¯ãOpenAIã®API Keyãã¯ã©ã€ã¢ã³ãã«åã蟌ãããã«ã¯ãããªãã®ã§ãã¢ããªããçŽæ¥APIãšéä¿¡ããŠãããšããããèªåã®ãµãŒããŒçµç±ã§è¡ãå¿ èŠããããšããã§ããããã«ä»åã®ããã«é 次åŠçãè¡ãå Žåã¯ãµãŒããŒããPushã§ãããããªæ§æã«ããªããšãããªãããªæ°ãããŸãã
2ã€ç®ã¯ãé³å£°åæåŠçãµãŒããŒã®çšæã§ããè€æ°ãªã¯ãšã¹ããæããšãããGPUã€ã³ã¹ã¿ã³ã¹ãçšæãã€ã€ãåé·åå«ããŠèããŠããå¿ èŠããããŸããéä¿¡éã®åæžã®ããã«å§çž®ãããã©ãŒãããã§ã®ãããšãã転éè² è·ãã³ãã¯ã·ã§ã³æéãªã©ã®èæ ®ãå¿ èŠã§ããïŒã¢ãã€ã«åãã«ã¯voicevox_coreã®ãã«ãã€ã³ã¯ãããããªææïŒ
1ã2ãã¬ãããªåãçµãã°ã¯ãªã¢ã§ãããã§ãããæéãšéçšã³ã¹ãã¯ãããããã§ããã
ãŸãšã
ä»åã¯OpenAI APIãšVOICEVOXããããŠfeaturing.ããã ãããªã ãã¯ãªãç¡éèªã¿äžãã¢ããªãããã ãã©ãŒãã®éçºãã€ã³ãã«ã€ããŠè§£èª¬ããŸããã
LLMã¯å®çšçã·ã¹ãã ãžã®é©çšã¯å€ã èãããããšæããŸããããã®ãããªãšã³ã¿ã¡ãžã®é©çšãé¢çœãã§ãããä»åã¯ããããå匷ã«ãªããŸããã
ãã ããããããã¯ãªãããšã¯äœãã®ãããªãã®ã¯ããšãŠã䞻芳çã§ããè©äŸ¡ã¯é£ãããããã³ããã®å®çŸ©ã»æ¹è¯ãªã©ã«ãå€ãã®ãã¥ãŒãªã¹ãã£ãã¯ãå¿ èŠãããªå°è±¡ãæã¡ãŸããïŒä»åã¯æ€èšŒïŒãžã§ãŒã¯ååãªã®ã§æ·±ãã¯æ€èšããŠãŸããïŒã
以äžãã¢ããªéçºãããã³ããã®åèã«ããŠããã ããã°å¹žãã§ãã



