{"id":377599,"date":"2024-05-31T03:00:12","date_gmt":"2024-05-31T03:00:12","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=377599"},"modified":"-0001-11-30T00:00:00","modified_gmt":"2024-05-31T03:00:12","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=377599","title":{"rendered":"<span>\u041a\u0430\u043a \u0437\u0430\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0433\u043e\u0432\u043e\u0440\u0438\u0442\u044c \u043f\u043e-\u0440\u0443\u0441\u0441\u043a\u0438 World Of Warcraft \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e AI<\/span>"},"content":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<h2>\u0421\u0438\u043d\u043e\u043f\u0441\u0438\u0441<\/h2>\n<p>\u0417\u0434\u0440\u0430\u0432\u0441\u0442\u0432\u0443\u0439\u0442\u0435-\u0437\u0434\u0440\u0430\u0432\u0441\u0442\u0432\u0443\u0439\u0442\u0435, \u0438\u0433\u0440\u0430\u044e \u044f \u0437\u043d\u0430\u0447\u0438\u0442 \u0432 \u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0439 World of Warcraft \u0438 \u043f\u043e\u043d\u0438\u043c\u0430\u044e, \u0447\u0442\u043e \u0438\u0433\u0440\u0430 \u0442\u043e\u0441\u043a\u043b\u0438\u0432\u0430 \u0438\u0437-\u0437\u0430 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u044f \u0431\u043e\u043b\u0435\u0435-\u043c\u0435\u043d\u0435\u0435 \u043e\u0437\u0432\u0443\u0447\u0435\u043d\u043d\u044b\u0445 \u043a\u0432\u0435\u0441\u0442\u043e\u0432. \u041a\u043e\u043d\u0435\u0447\u043d\u043e, \u0438\u043d\u0434\u0438-\u0441\u0442\u0443\u0434\u0438\u044f \u041c\u0435\u0442\u0435\u043b\u0438\u0446\u0430 \u043d\u0435 \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u0430 \u043e\u0437\u0432\u0443\u0447\u0438\u0442\u044c \u0432\u0441\u044e \u0441\u0432\u043e\u044e \u0438\u0433\u0440\u0443, \u0434\u0430 \u0438 \u043f\u043e\u043d\u044f\u0442\u043d\u043e, \u0447\u0442\u043e \u0441\u044e\u0436\u0435\u0442 \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u0435\u0442\u0441\u044f, \u0430 \u043b\u044e\u0434\u0438 \u0438\u043c\u0435\u044e\u0442 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e \u043c\u0435\u043d\u044f\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u0443 \u0438\u043b\u0438, \u0434\u0430 \u044d\u0442\u043e \u043f\u0435\u0447\u0430\u043b\u044c\u043d\u043e, \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0433\u0438\u0431\u0435\u043b\u0438, \u043a\u0430\u043a \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0441\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c \u0441 \u043e\u0437\u0432\u0443\u0447\u043a\u043e\u0439 \u0410\u0440\u0442\u0430\u0441\u0430 \u041c\u0435\u043d\u0435\u0442\u0438\u043b\u0430 \u0432 Warcraft III: Frozen Throne.<\/p>\n<p>\u0412 \u043e\u0431\u0449\u0435\u043c, \u0437\u0430\u0432\u0430\u0440\u0438\u0432\u0430\u0439\u0442\u0435 \u0447\u0430\u0439, \u043a\u0430\u043a \u0438 \u0432\u0441\u0435 \u043c\u043e\u0438 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0435 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438, \u044d\u0442\u0430 \u0441\u0442\u0430\u0442\u044c\u044f \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 (\u0431|\u0432)\u043b\u043e\u0433\u0430.<\/p>\n<div class=\"tm-iframe_temp\" data-src=\"https:\/\/embedd.srv.habr.com\/iframe\/6658edf6ee339fd48b150f8f\" data-style=\"\" id=\"6658edf6ee339fd48b150f8f\" width=\"\"><\/div>\n<div class=\"tm-iframe_temp\" data-src=\"https:\/\/embedd.srv.habr.com\/iframe\/6658ee2fee68229db63a028d\" data-style=\"\" id=\"6658ee2fee68229db63a028d\" width=\"\"><\/div>\n<h2>\u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435<\/h2>\n<p>\u0418 \u0432\u043e\u0442 \u044f \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e-\u043d\u0435\u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e \u043d\u0430\u0442\u044b\u043a\u0430\u044e\u0441\u044c \u043d\u0430 \u0430\u0434\u0434\u043e\u043d\u044b (\u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f) \u0434\u043b\u044f wow. \u0414\u043e \u044d\u0442\u043e\u0433\u043e \u0438\u043c\u0438 \u043d\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0441\u044f, \u0442\u0430\u043a \u043a\u0430\u043a \u0432 \u043f\u0435\u0440\u0432\u0443\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c, \u044f &#8212; \u0438\u0433\u0440\u043e\u043a \u043b\u043e\u0440\u0430, \u043c\u043d\u0435 \u043d\u0435 \u043e\u0441\u043e\u0431\u043e \u0431\u044b\u043b\u0430 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0430 PvP \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0449\u0430\u044f \u0438\u043b\u0438 \u043f\u043e\u0445\u043e\u0434\u044b \u0432 \u043f\u043e\u0434\u0437\u0435\u043c\u0435\u043b\u044c\u044f.<\/p>\n<p>\u0421\u0440\u0435\u0434\u0438 \u043f\u0430\u0447\u043a\u0438 \u0430\u0434\u0434\u043e\u043d\u043e\u0432 \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u0440\u0435\u0431\u044f\u0442\u0430 &#8212; <a href=\"https:\/\/www.curseforge.com\/wow\/addons\/voiceover\" rel=\"noopener noreferrer nofollow\">https:\/\/www.curseforge.com\/wow\/addons\/voiceover<\/a>, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043a\u0430\u043a\u0438\u043c-\u0442\u043e \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u0441\u0434\u0435\u043b\u0430\u043b\u0438 \u043e\u0437\u0432\u0443\u0447\u043a\u0443 \u0434\u043b\u044f \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u0436\u0435\u0439. \u0412 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0438 \u0441\u043a\u0430\u0437\u0430\u043d\u043e: &#171;\u0432\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0441\u043a\u0430\u0447\u0430\u0442\u044c voice pack&#187;, \u0442\u043e \u0435\u0441\u0442\u044c \u0430\u0434\u0434\u043e\u043d \u0438\u043c\u0435\u0435\u0442 \u043a\u0430\u043a\u043e\u0439-\u0442\u043e dependency.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/6b8\/7ca\/e00\/6b87cae0011c6f5aca425c44f16a5784.png\" width=\"1262\" height=\"1008\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/6b8\/7ca\/e00\/6b87cae0011c6f5aca425c44f16a5784.png\"\/><\/figure>\n<p>\u0422\u043e \u0435\u0441\u0442\u044c \u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f player-\u043e\u043c, \u0430 \u0432\u043e\u0442 \u0441\u0430\u043c\u0430 \u043e\u0437\u0432\u0443\u0447\u043a\u0430 &#8212; \u044d\u0442\u043e \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u0430\u0440\u0445\u0438\u0432. \u0418 \u0432\u043d\u0438\u0437\u0443 \u0435\u0441\u0442\u044c \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 GitHub. \u041e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u043c<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/7f5\/bff\/6d1\/7f5bff6d13d68a043541141fae1fde4b.png\" width=\"1591\" height=\"1093\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/7f5\/bff\/6d1\/7f5bff6d13d68a043541141fae1fde4b.png\"\/><\/figure>\n<p>\u0410 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u044f\u0437\u044b\u043a\u0430 \u0443 \u0440\u0435\u0431\u044f\u0442 \u0443\u0440\u0435\u0437\u0430\u043d\u0430, \u0441\u0443\u0434\u044f \u043f\u043e Usage<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/33c\/4fa\/4b7\/33c4fa4b73cdf98c52fd8833661e5893.png\" width=\"1107\" height=\"1209\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/33c\/4fa\/4b7\/33c4fa4b73cdf98c52fd8833661e5893.png\"\/><\/figure>\n<p>\u042f \u043d\u0430\u0448\u0435\u043b \u0441\u0441\u044b\u043b\u043a\u0443 \u043d\u0430 \u0438\u0445 Discord \u0438 \u043f\u043e\u043b\u0435\u0437 \u0442\u0443\u0434\u044b, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u043e\u044f\u0441\u043d\u0438\u0442\u044c \u0432 \u0447\u0451\u043c \u0434\u0435\u043b\u043e, \u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u0440\u0435\u0431\u044f\u0442\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438 3rd party, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u043b\u0430 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c text-to-speech \u043e\u0441\u043d\u043e\u0432\u044b\u0432\u0430\u044f\u0441\u044c \u043d\u0430 \u043a\u0443\u0441\u043e\u0447\u043a\u0430\u0445 \u0433\u043e\u043b\u043e\u0441\u043e\u0432. \u0422\u043e \u0435\u0441\u0442\u044c \u0432\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0433\u043e\u043b\u043e\u0441\u0430 \u043f\u043e\u0434 \u043a\u0430\u0436\u0434\u0443\u044e \u0440\u0430\u0441\u0443 \u0438 \u043a\u0430\u0436\u0434\u044b\u0439 \u043f\u043e\u043b, \u0430 \u0434\u0430\u043b\u044c\u0448\u0435, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0438\u0445 \u043d\u0435\u0439\u0440\u043e\u043d\u043a\u0443 \u043d\u0430\u0433\u0435\u043d\u0435\u0440\u0438\u0442\u044c \u0441\u0435\u0431\u0435 \u0432\u0441\u0451 \u0447\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u0438 \u0441\u043b\u043e\u0436\u0438\u0442\u044c \u0432 \u0430\u0443\u0434\u0438\u043e\u0444\u0430\u0439\u043b\u044b.<\/p>\n<p>\u0427\u0435\u043b \u043f\u0438\u0448\u0435\u0442, \u0447\u0442\u043e \u043f\u043e\u0442\u0440\u0430\u0442\u0438\u043b \u043d\u0435 \u043c\u0435\u043d\u0435\u0435 600 \u0431\u0430\u043a\u0441\u043e\u0432 \u0434\u043b\u044f \u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438, \u043d\u043e \u0432\u043e\u0442 \u0442\u0440\u0430\u0442\u0438\u0442\u044c \u0434\u0430\u043b\u044c\u0448\u0435 &#8212; \u0434\u0435\u043d\u0435\u0433 \u043d\u0435\u0442. \u042f \u0445\u043e\u0442\u0435\u043b \u0431\u044b\u043b\u043e \u043f\u043b\u044e\u043d\u0443\u0442\u044c \u0438 \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0440\u0443\u0441\u0441\u043a\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e \u0442\u0430\u043c \u0436\u0435 \u0437\u0430\u043f\u043b\u0430\u0442\u0438\u0432 \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043d\u0443\u0436\u043d\u043e. \u041d\u043e \u043f\u043e \u043f\u043e\u0434\u0441\u0447\u0435\u0442\u0430\u043c \u0442\u0430\u0440\u0438\u0444\u0430 \u0442\u0430\u043c \u0432\u044b\u0445\u043e\u0434\u0438\u0442 \u0437\u0430 2\u043a \u0431\u0430\u043a\u0441\u043e\u0432 \u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0442\u043e\u0431\u044b \u0447\u0442\u043e-\u0442\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e\u0435.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/ee2\/8ac\/d0f\/ee28acd0f468fde78e28b27a832f1350.png\" width=\"1692\" height=\"270\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/ee2\/8ac\/d0f\/ee28acd0f468fde78e28b27a832f1350.png\"\/><\/figure>\n<p>\u0418 \u0442\u0443\u0442 \u0443\u0441\u043b\u044b\u0448\u0430\u0442\u044c \u043a\u0432\u0435\u0441\u0442\u044b \u043d\u0430 \u0440\u0443\u0441\u0441\u043a\u043e\u043c \u0441\u0442\u0430\u043b\u043e \u0446\u0435\u043b\u044c\u044e. <em>\u041d\u0435 \u0442\u043e, \u0447\u0442\u043e\u0431\u044b \u044f \u043d\u0435 \u0437\u043d\u0430\u044e \u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u0438\u0439 (\u0438 IELTS \u0441\u0434\u0430\u0432\u0430\u043b, \u0438 \u043d\u0430 Microsoft \u0440\u0430\u0431\u043e\u0442\u0430\u043b, \u0438 \u0432 \u0411\u0435\u0440\u043b\u0438\u043d\u0435 \u0433\u043e\u0434 \u043f\u0440\u043e\u0436\u0438\u043b (\u0435\u0441\u043b\u0438 \u043d\u0430\u0434\u043e \u043c\u043e\u0433\u0443 \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0441\u0432\u043e\u0439 \u0432\u0437\u0433\u043b\u044f\u0434 \u043d\u0430 \u0442\u043e, \u043a\u0430\u043a \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043d\u0435\u043f\u0440\u0435\u0434\u0432\u0437\u044f\u0442\u0430\u044f \u0436\u0438\u0437\u043d\u044c \u0441\u0435\u043c\u0435\u0439\u043d\u043e\u0433\u043e \u0447\u0435\u043b\u043e\u0432\u0435\u043a\u0430, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0441\u043e\u0432\u0435\u0442\u044b \u043f\u0440\u0438 \u0440\u0435\u043b\u043e\u043a\u0430\u0446\u0438\u0438, \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u043e\u0441\u0438\u0433\u043d\u0430\u043b\u044c\u0442\u0435 \u0432 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0445)), \u0434\u0430 \u0438 \u0432 \u0446\u0435\u043b\u043e\u043c \u043c\u043e\u0433\u0443 \u0441\u0432\u043e\u0439 \u0433\u0430\u0439\u0434 \u043f\u043e \u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u043e\u043c\u0443 \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043a\u0430\u043a \u0435\u0433\u043e \u0437\u0430 \u0433\u043e\u0434 \u043e\u0441\u0432\u043e\u0438\u0442\u044c \u0434\u043e \u0440\u0430\u0437\u0433\u043e\u0432\u043e\u0440\u043d\u043e\u0433\u043e.<br \/><\/em><br \/>\u0421\u043e\u0440\u0440\u0438 \u0437\u0430 \u043e\u0444\u0444\u0442\u043e\u043f, \u0435\u0434\u0435\u043c \u0434\u0430\u043b\u044c\u0448\u0435: \u0412 \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u043c\u043e\u043c\u0435\u043d\u0442 \u044f \u043f\u043e\u0434\u0443\u043c\u0430\u043b, \u0430 \u0447\u0442\u043e \u0435\u0441\u043b\u0438 \u0440\u0435\u0431\u044f\u0442\u0430 \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0435 \u0448\u0430\u0440\u044f\u0442, \u0447\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u044e\u0437\u0430\u0442\u044c open source?<br \/> \u0422\u0430\u043c \u043a\u0430\u043a \u0440\u0430\u0437 \u0435\u0441\u0442\u044c \u0446\u0435\u043b\u0430\u044f \u0442\u044c\u043c\u0430 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0437\u0430\u043a\u0440\u044b\u0432\u0430\u044e\u0449\u0438\u0439\u0441\u044f <a href=\"https:\/\/github.com\/coqui-ai\/TTS\" rel=\"noopener noreferrer nofollow\">https:\/\/github.com\/coqui-ai\/TTS<\/a><br \/> \u0414\u0430\u043b\u0435\u0435 \u0432 \u0445\u043e\u0434\u0435 \u043c\u043e\u0438\u0445 \u0440\u0430\u0437\u043c\u044b\u0448\u043b\u0435\u043d\u0438\u0439 \u044f \u0432\u044b\u0441\u0442\u0440\u043e\u0438\u043b \u0446\u0435\u043b\u044b\u0439 \u0447\u0443\u0434\u043e\u0432\u0438\u0449\u043d\u044b\u0439 \u043f\u043b\u0430\u043d \u043f\u043e \u0443\u043d\u0438\u0447\u0442\u043e\u0436\u0435\u043d\u0438\u044e \u044f\u0437\u044b\u043a\u043e\u0432 \u0432 \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0435, \u043d\u043e \u0437\u0430\u0431\u0438\u043b \u043d\u0430 \u043d\u0435\u0433\u043e. \u041a\u0430\u043a \u0432\u0441\u0435\u0433\u0434\u0430. \u041d\u043e \u0432\u043e\u0442 \u043d\u0435\u0434\u0430\u0432\u043d\u043e \u044f \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u043e\u0434\u0443\u043c\u0430\u043b &#8212; \u0430 \u043c\u043e\u0436\u0435\u0442 \u043c\u043d\u0435 \u043f\u0435\u0440\u0435\u0432\u0435\u0441\u0442\u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u0438\u0445 \u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e \u043d\u0430 \u0440\u0443\u0441\u0441\u043a\u0443\u044e?<br \/> Coqui-ai tts (\u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u041a\u041c\u041a \u043f\u043e\u0432\u0435\u0440\u0445 Mozilla TTS) \u0443\u043c\u0435\u0435\u0442 \u043a\u043b\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0433\u043e\u043b\u043e\u0441 \u0438 \u0442\u0440\u0430\u0432\u0438\u0442\u044c \u0435\u0433\u043e \u043d\u0430 \u043d\u0443\u0436\u043d\u044b\u0439 \u0442\u0435\u043a\u0441\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0441\u0435\u043c\u043f\u043b \u0445\u043e\u0442\u044c \u043d\u0430 6 \u0441\u0435\u043a\u0443\u043d\u0434. <\/p>\n<p>\u041d\u0430\u0434\u043e \u043f\u043e\u043d\u044f\u0442\u044c \u043a\u0430\u043a \u0443\u0441\u0442\u0440\u043e\u0435\u043d \u044d\u0442\u043e\u0442 \u0441\u0430\u043c\u044b\u0439 \u0430\u0434\u0434\u043e\u043d.<\/p>\n<h2>\u041a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u0430\u0434\u0434\u043e\u043d, \u0434\u0430 \u0438 \u0432\u043e\u043e\u0431\u0449\u0435 \u0430\u0434\u0434\u043e\u043d\u044b \u0432 \u0446\u0435\u043b\u043e\u043c<\/h2>\n<p>\u0412 \u0445\u043e\u0434\u0435 \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u044f, \u0441\u0442\u0430\u043b\u043e \u043f\u043e\u043d\u044f\u0442\u043d\u043e, \u0447\u0442\u043e \u0432\u0441\u0451 \u043a\u0443\u0434\u0430 \u043f\u0440\u043e\u0441\u0442\u043e-\u0441\u043b\u043e\u0436\u043d\u043e. \u0410\u0434\u0434\u043e\u043d\u044b \u044d\u0442\u043e \u0432\u0441\u0440\u0430\u0442\u044b\u0439 lua-\u043a\u043e\u0434, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0435 \u0438\u043c\u0435\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f \u043d\u0438 \u043a \u0447\u0435\u043c\u0443 \u0432\u043d\u0435 WoW-\u0430. \u0422\u043e \u0435\u0441\u0442\u044c \u0432\u044b \u043d\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u0442\u0430\u043a \u043f\u043e\u0441\u0442\u0443\u0447\u0430\u0442\u044c\u0441\u044f \u0432\u043e \u0432\u043d\u0435\u0448\u043d\u0438\u0439 REST API \u0438\u043b\u0438 \u043e\u0431\u0440\u0430\u0449\u0430\u0442\u044c\u0441\u044f \u043a I\/O. \u0423 \u0432\u0430\u0441 \u0435\u0441\u0442\u044c \u044d\u0442\u043e\u0442 \u0434\u043e\u0441\u0442\u0443\u043f \u043d\u0430 \u043c\u043e\u043c\u0435\u043d\u0442 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0430\u0434\u0434\u043e\u043d\u0430, \u043d\u043e \u043d\u0435 \u0431\u043e\u043b\u0435\u0435. \u0410 \u0442\u0430\u043a \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0442\u0435\u043b\u0435\u0433\u0440\u0430\u043c \u0431\u043e\u0442\u0430 \u0432 \u0447\u0430\u0442 \u0432 wow, \u043d\u043e \u0443\u0432\u044b, \u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0440\u0430\u0437, \u043d\u0430 \u0443\u043c\u0435 \u0435\u0441\u0442\u044c \u043f\u0430\u0440\u0430 \u043b\u0430\u0437\u0435\u0435\u043a, \u043d\u043e \u043b\u0435\u043d\u044c.<br \/> \u0427\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u043b\u0438 \u0440\u0435\u0431\u044f\u0442\u0430 &#8212; \u043d\u0430\u0448\u043b\u0438 \u043e\u0442\u043a\u0440\u044b\u0442\u0443\u044e \u0431\u0434 \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u043a\u0432\u0435\u0441\u0442\u043e\u0432, \u0432\u0435\u0441\u0438\u0442 \u043e\u043d\u0430 \u0441\u043a\u043e\u043b\u044c\u043a\u043e-\u0442\u043e \u0442\u0430\u043c. <\/p>\n<p>\u0417\u043d\u0430\u0447\u0438\u0442 \u0434\u0435\u043b\u0430\u044e\u0442 \u043e\u043d\u0438 \u0442\u0430\u043a:<\/p>\n<p>\u041d\u0430 \u043a\u0430\u0436\u0434\u0443\u044e \u0440\u0430\u0441\u0443 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f 2 \u0433\u043e\u043b\u043e\u0441\u0430 &#8212; \u043c\u0443\u0436\u0441\u043a\u043e\u0439 \u0438 \u0436\u0435\u043d\u0441\u043a\u0438\u0439, \u0430 \u0440\u0430\u0441 \u043e\u043a\u043e\u043b\u043e 15 \u043c\u0438\u043d\u0438\u043c\u0443\u043c, \u0438\u0442\u043e\u0433\u043e \u043f\u043e\u0440\u044f\u0434\u043a\u0430 30 \u0433\u043e\u043b\u043e\u0441\u043e\u0432 \u0438 10\u043a\u043a \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 \u0442\u0435\u043a\u0441\u0442\u0430 \u043d\u0430 \u043a\u0430\u0436\u0434\u0443\u044e. \u041c\u0434\u0435.<\/p>\n<h2>\u041f\u0440\u0438\u0441\u0442\u0443\u043f\u0430\u0435\u043c \u043a \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0435 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f<\/h2>\n<p>\u0418\u0434\u0443 \u043a\u043b\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439, \u043d\u043e \u0447\u0435\u0440\u0435\u0437 GitHub Codespaces. \u041f\u043e\u0447\u0435\u043c\u0443? \u041f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043d\u0430 Mac Studio \u0441\u0442\u043e\u0438\u0442 ARM, \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c x86 \u043a\u043e\u043c\u043f \u043c\u043d\u0435 \u043b\u0435\u043d\u044c, \u0447\u0435\u0440\u0435\u0437 UTM \u0435\u0441\u0442\u044c \u0432\u0438\u043d\u0434\u0430 \u0438 NetBSD \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0440\u0430\u0431\u043e\u0447\u0438\u0445 \u043c\u0430\u0448\u0438\u043d, \u043d\u043e \u0432\u043e\u0442 \u0434\u043b\u044f \u0442\u043e\u0433\u043e \u0432\u0441\u0440\u0430\u0442\u043e\u0433\u043e tts \u043d\u0443\u0436\u043d\u0430 \u0431\u0443\u0431\u0443\u043d\u0442\u0430, \u0434\u0430 \u0438 \u0441\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e \u0432 x86. \u0410 \u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0447\u0435\u0440\u0435\u0437 Podman \u0438 \u0437\u0430\u0441\u0438\u0440\u0430\u0442\u044c \u0441\u0432\u043e\u044e \u043c\u0430\u0448\u0438\u043d\u0443 \u043c\u043d\u0435 \u043b\u0435\u043d\u044c \u043f\u043e\u0442\u043e\u043c \u0432\u044b\u0447\u0438\u0449\u0430\u0442\u044c \u0432\u0441\u0451 \u044d\u0442\u043e \u0434\u043e\u0431\u0440\u043e. \u0412 \u043e\u0431\u0449\u0435\u043c \u043b\u0443\u0447\u0448\u0435\u0435 \u0432\u0440\u0430\u0433 \u0445\u043e\u0440\u043e\u0448\u0435\u0433\u043e. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u0440\u043e\u0441\u0442\u043e \u0432 GitHub Codespaces.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/6d9\/8ac\/e69\/6d98ace69a1f5fcaea545a498f8885fd.png\" width=\"1580\" height=\"1127\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/6d9\/8ac\/e69\/6d98ace69a1f5fcaea545a498f8885fd.png\"\/><\/figure>\n<p>\u0412 \u0438\u0445 \u0436\u0435 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u043c \u043e\u0431\u043e\u0433\u0430\u0449\u0430\u0442\u044c \u043f\u0435\u0442\u0443\u0445\u043e\u043d-\u043f\u0440\u043e\u0435\u043a\u0442, \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0442\u0443\u0434\u044b TTS<\/p>\n<pre><code class=\"bash\">python -m venv .venv . .venv\/bin\/activate echo TTS >> requirements.txt pip install -r requirements.txt<\/code><\/pre>\n<p>\u0414\u0430\u043b\u044c\u0448\u0435 \u0442\u0430\u0449\u0438\u043c \u0438\u0445 Soundpack \u0432 \u043f\u0430\u043f\u043e\u0447\u043a\u0443 \u0441 translator-\u043e\u043c (\u044d\u0442\u043e\u0442 \u043f\u0430\u043a \u0432\u0435\u0441\u0438\u0442 1 \u0433\u0431)<\/p>\n<pre><code class=\"bash\">mkdir translator cd translator mkdir assets\/wow-classic-en wget https:\/\/github.com\/mrthinger\/wow-voiceover\/releases\/download\/v1.3.1\/AI_VoiceOverData_Vanilla-v1.0.0.zip unzip AI_VoiceOverData_Vanilla-v1.0.0.zip  # \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u043c \u0430\u0440\u0445\u0438\u0432, \u043c\u0430\u043b\u043e \u043b\u0438 \u0447\u0442\u043e-\u0442\u043e \u043d\u0430\u043a\u043e\u0441\u044f\u0447\u0438\u043c mv AI_VoiceOverData_Vanilla-v1.0.0.zip ~\/downloads<\/code><\/pre>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0442\u0430\u0449\u0438\u043c tts, \u044f \u0445\u043e\u0442\u0435\u043b \u0431\u044b\u043b\u043e \u0446\u0435\u043b\u0438\u043a\u043e\u043c \u0441\u043e\u0431\u0438\u0440\u0430\u0442\u044c \u0438\u0445 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439, \u043d\u043e \u043f\u043e\u0442\u043e\u043c \u043f\u043b\u044e\u043d\u0443\u043b \u0438 \u0443\u0432\u0438\u0434\u0435\u043b, \u0447\u0442\u043e \u0443 Codespaces \u0438\u0442\u0430\u043a \u0435\u0441\u0442\u044c docker, \u043a\u0430\u043a \u0431\u044b \u044f \u043d\u0435\u043d\u0430\u0432\u0438\u0434\u0435\u043b \u0438\u0445, \u0436\u0435\u043b\u0430\u043d\u0438\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u0441\u0442\u0440\u0435\u0435 \u043f\u043e\u0431\u0435\u0434\u0438\u043b.<\/p>\n<p>P.S. \u041f\u0440\u0438\u0447\u0435\u043c \u043c\u0435\u0441\u044f\u0446 \u043d\u0430\u0437\u0430\u0434 \u044f \u0431\u0430\u043b\u043e\u0432\u0430\u043b\u0441\u044f \u0441 tts, \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e \u043e\u043d \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f, \u043d\u043e \u043d\u0430 \u043f\u0435\u0442\u0443\u0445\u043e\u043d\u0435 \u043d\u0435 \u0432\u044b\u0448\u0435 3.10 \u0415\u041c\u041d\u0418\u041f.<\/p>\n<p>\u0422\u043e \u0435\u0441\u0442\u044c \u043e\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f \u0432 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0435, \u0437\u043d\u0430\u0447\u0438\u0442 \u043c\u043e\u0436\u043d\u043e \u0434\u043e\u043f\u0438\u0441\u0430\u0442\u044c \u0438 compose<\/p>\n<pre><code class=\"bash\">podman run --rm -it -p 5002:5002 --entrypoint \/bin\/bash ghcr.io\/coqui-ai\/tts-cpu<\/code><\/pre>\n<p>\u041f\u043e\u043b\u0443\u0447\u0438\u043b\u0430\u0441\u044c \u0432\u043e\u0442 \u0442\u0430\u043a\u0430\u044f \u0448\u043b\u044f\u043f\u0430<\/p>\n<pre><code class=\"yaml\">  tts:     image: ghcr.io\/coqui-ai\/tts-cpu     container_name: tts-server     ports:       - \"5002:5002\" <\/code><\/pre>\n<p>\u0417\u0430\u043f\u0443\u0441\u043a\u0430\u044e \u0435\u0451 \u0447\u0435\u0440\u0435\u0437 <code>podman-compose up tts<\/code>, \u0430 \u0442\u0430\u043c \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 \u043d\u0430 6.3GB \u0431\u0443\u0433\u0430\u0433\u0430<\/p>\n<p> \u0422\u0435\u043f\u0435\u0440\u044c \u0441\u0443\u0434\u044f \u043f\u043e \u0430\u0440\u0445\u0438\u0432\u0443 \u0442\u0430\u043c \u043a\u0430\u043a\u0430\u044f-\u0442\u043e \u0445\u0440\u0435\u043d\u044c \u0438 \u043d\u0430\u0434\u043e \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u0434 \u0430\u0434\u0434\u043e\u043d \u0441\u0432\u043e\u0438, \u043d\u0430\u0437\u043e\u0432\u0443 \u044d\u0442\u043e, \u043f\u0440\u0435-\u0444\u0430\u0439\u043b\u044b.<\/p>\n<pre><code class=\"bash\">cp .env.example .env # \u0443 \u043d\u0438\u0445 \u0442\u0430\u043c \u0443\u0436\u0435 \u0432 \u0440\u0435\u043f\u0435 \u043c\u0443\u0441\u043a\u0443\u043b docker compose up -d python cli-main.py init-db  python cli-main.py gen_lookup_tables --lang=ruRU<\/code><\/pre>\n<p>\u0432 \u043f\u0430\u043f\u043a\u0435 tts_cli \u0441\u043e\u0437\u0434\u0430\u044e tts_ai.py, \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043e\u043d\u043e \u043f\u043e\u0434\u0442\u044f\u043d\u0443\u043b\u043e \u043c\u043e\u0434\u0435\u043b\u044c<\/p>\n<pre><code class=\"python\">import torch from TTS.api import TTS  # Get device device = \"cpu\"  # List available ?TTS models print(TTS().list_models())  # Init TTS tts = TTS(\"tts_models\/multilingual\/multi-dataset\/xtts_v2\").to(device)  def getVoice(text, input_sound_path, output_sound_path, language):     tts.tts_to_file(text=text, speaker_wav=input_sound_path, language=language, file_path=output_sound_path) <\/code><\/pre>\n<p>\u0432 \u0441\u0430\u043c\u043e\u0439 \u043f\u0430\u043f\u043a\u0435 \u0432\u044b\u0437\u044b\u0432\u0430\u044e<\/p>\n<pre><code>python tts_ai.py<\/code><\/pre>\n<p>\u0438 \u0443\u0431\u0435\u0436\u0434\u0430\u044e\u0441\u044c, \u0447\u0442\u043e \u043e\u043d\u043e \u043d\u0435 \u0443\u043c\u0435\u0435\u0442 \u0442\u044f\u043d\u0443\u0442\u044c \u043c\u043e\u0434\u0435\u043b\u044c \u0441\u0430\u043c\u0430, \u0437\u043d\u0430\u0447\u0438\u0442 \u043d\u0430\u0434\u043e \u043a\u0430\u0447\u0430\u0442\u044c \u0440\u0435\u043f\u043e \u0438\u0437 <a href=\"https:\/\/huggingface.co\/coqui\/XTTS-v2\/tree\/main?clone=true\" rel=\"noopener noreferrer nofollow\">https:\/\/huggingface.co\/coqui\/XTTS-v2\/tree\/main?clone=true<\/a><\/p>\n<pre><code class=\"bash\">git lfs install git clone https:\/\/huggingface.co\/coqui\/XTTS-v2<\/code><\/pre>\n<p>\u0438 \u0432\u043e\u0442 \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u043b\u043e\u0441\u044c \u043c\u0435\u0441\u0442\u043e \u043d\u0430 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u043a\u0435<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/f32\/0b0\/263\/f320b02639d4fb8f4fcd55e79360b8d7.png\" width=\"926\" height=\"235\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/f32\/0b0\/263\/f320b02639d4fb8f4fcd55e79360b8d7.png\"\/><\/figure>\n<p>\u043d\u043e \u043c\u044b \u0443\u0434\u0430\u043b\u0438\u043c \u0441\u043a\u0430\u0447\u0430\u043d\u043d\u044b\u0439 \u0430\u0440\u0445\u0438\u0432 sound-\u043e\u0432 \u0438 \u0432\u043e\u0442 + 1 \u0433\u0438\u0433\u0430\u0431\u0430\u0439\u0442\u0438\u043a:<\/p>\n<pre><code class=\"bash\">rm -rf ~\/downloads<\/code><\/pre>\n<p>\u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043b ncdu \u0438 \u043e\u0441\u0432\u043e\u0431\u043e\u0434\u0438\u043b \u043d\u0430 2.2GB<br \/>\u043f\u043e\u0442\u043e\u043c \u043f\u043e\u043d\u044f\u043b, \u0447\u0442\u043e \u0442\u0430\u043c numpy \u043d\u0435 \u0434\u0440\u0443\u0436\u0438\u0442 \u0441 \u0432\u0435\u0440\u0441\u0438\u0435\u0439 \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u0443 tts, \u043a\u043e\u0440\u043e\u0447\u0435 \u0434\u0430\u0443\u043d\u0433\u0440\u0435\u0439\u0434\u043d\u0443\u043b \u043f\u0430\u043a\u0435\u0442<\/p>\n<p>\u0432 \u0438\u0442\u043e\u0433\u0435 \u043c\u0435\u0441\u0442\u0430 \u043e\u043f\u044f\u0442\u044c \u043d\u0435 \u0445\u0432\u0430\u0442\u0438\u043b\u043e, \u043f\u043b\u044e\u043d\u0443\u043b \u0438 \u0430\u043f\u0433\u0440\u0435\u0439\u0434\u043d\u0443\u043b \u0442\u0430\u0447\u043a\u0443<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/50d\/77e\/d29\/50d77ed2972db9cf78f3f3d6c25c9159.png\" width=\"1988\" height=\"86\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/50d\/77e\/d29\/50d77ed2972db9cf78f3f3d6c25c9159.png\"\/><\/figure>\n<p>\u043f\u043e\u043a\u0430 \u043e\u043d\u0430 \u0442\u0430\u043c \u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043f\u043e\u0448\u0435\u043b \u0447\u0438\u0442\u0430\u0442\u044c \u043a\u0430\u043a \u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u0442\u044c \u0441\u0432\u043e\u0439 \u0430\u0434\u0434\u043e\u043d, \u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c, \u0447\u0442\u043e \u043d\u0430\u0434\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u043f\u043e \u0441\u0441\u044b\u043b\u043a\u0435 <a href=\"https:\/\/legacy.curseforge.com\/project\/create\" rel=\"noopener noreferrer nofollow\">https:\/\/legacy.curseforge.com\/project\/create<\/a> \u0438 \u0437\u0430\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0443\u044e \u0444\u043e\u0440\u043c\u0443, \u043e\u0442\u043b\u043e\u0436\u0443 \u043f\u043e\u043a\u0430 \u043d\u0430 \u043f\u043e\u0442\u043e\u043c, \u0442\u0430\u043a \u043a\u0430\u043a \u0442\u0430\u0447\u043a\u0430 \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0431\u0430\u043c\u043f\u043d\u0443\u043b\u0430\u0441\u044c<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/572\/c19\/97b\/572c1997b71bbc600b53ea884e71aaf8.png\" width=\"1249\" height=\"1325\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/572\/c19\/97b\/572c1997b71bbc600b53ea884e71aaf8.png\"\/><\/figure>\n<p>\u0417\u0430\u043f\u043e\u043b\u043d\u044f\u044e \u043f\u043e\u0434 \u043a\u043e\u043f\u0438\u0440\u043a\u0443 \u0441 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0433\u043e, \u0432\u0435\u0437\u0434\u0435 \u0432\u0441\u0442\u0430\u0432\u043b\u044f\u044f Russian \u0438 \u0443\u0433\u043e\u0432\u0430\u0440\u0438\u0432\u0430\u044f \u043a\u0443\u043f\u0438\u0442\u044c \u043c\u043d\u0435 \u043a\u043e\u0444\u0435 \u0447\u0435\u0440\u0435\u0437 \u043f\u043e\u0434\u043f\u0438\u0441\u043a\u0443 \u043d\u0430 \u043c\u043e\u0439 \u043f\u0430\u0431\u043b\u0438\u043a \u043f\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u041f\u041e \u0432 \u0442\u0435\u043b\u0435\u0433\u0440\u0430\u043c <a href=\"https:\/\/t.me\/digitable_sub_bot\" rel=\"noopener noreferrer nofollow\">https:\/\/t.me\/digitable_sub_bot<\/a> \u043f\u043e \u0446\u0435\u043d\u0435 250\u0440 \u0432 \u043c\u0435\u0441\u044f\u0446)<\/p>\n<h2>\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430, \u0447\u0442\u043e TTS-\u043c\u043e\u0434\u0435\u043b\u044c \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442<\/h2>\n<p>\u0414\u0430\u043b\u044c\u0448\u0435 \u0442\u044b\u043a\u0430\u044e\u0441\u044c \u0432 tts \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0442\u0435\u043a\u0441\u0442\u0430 \u043a\u0432\u0435\u0441\u0442\u0430 \u0438 \u0432\u0445\u043e\u0434\u043d\u043e\u0439 \u0437\u0432\u0443\u043a\u043e\u0432\u043e\u0439 \u0434\u043e\u0440\u043e\u0436\u043a\u0438 \u0432\u044b\u0445\u043e\u0434\u043d\u0443\u044e \u0437\u0432\u0443\u043a\u043e\u0432\u0443\u044e \u0434\u043e\u0440\u043e\u0436\u043a\u0443<\/p>\n<pre><code class=\"bash\">tts \\ --model_name \"tts_models\/multilingual\/multi-dataset\/xtts_v2\" \\ --speaker_wav \/workspaces\/wow-voiceover\/translator\/assets\/wow-classic-en\/AI_VoiceOverData_Vanilla\/generated\/sounds\/quests\/2-complete.wav \\ --out_path \/workspaces\/wow-voiceover\/translator\/assets\/wow-classic-ru\/AI_VoiceOverData_Vanilla\/generated\/sounds\/quests\/2-complete.wav \\ --text \"\u041c\u043e\u0433\u0443\u0447\u0438\u0439 \u0433\u0438\u043f\u043f\u043e\u0433\u0440\u0438\u0444 \u041e\u0441\u0442\u0440\u043e\u043a\u043e\u0433\u043e\u0442\u044c \u0431\u044b\u043b \u0443\u0431\u0438\u0442, \u0438 \u043a\u043e\u0433\u043e\u0442\u044c \u044d\u0442\u043e\u0439 \u0441\u0432\u0438\u0440\u0435\u043f\u043e\u0439 \u0442\u0432\u0430\u0440\u0438 \u2013 \u0441\u0432\u0438\u0434\u0435\u0442\u0435\u043b\u044c\u0441\u0442\u0432\u043e \u0432\u0430\u0448\u0435\u0439 \u043f\u043e\u0431\u0435\u0434\u044b. \u0421\u0435\u043d\u0430\u043d\u0438 \u0413\u0440\u043e\u043c\u043e\u0441\u0435\u0440\u0434 \u043d\u0430 \u0437\u0430\u0441\u0442\u0430\u0432\u0435 \u0420\u0430\u0441\u0449\u0435\u043f\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0414\u0440\u0435\u0432\u0430 \u043d\u0435\u0441\u043e\u043c\u043d\u0435\u043d\u043d\u043e \u043f\u043e\u0436\u0435\u043b\u0430\u0435\u0442 \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u044d\u0442\u043e\u0442 \u0442\u0440\u043e\u0444\u0435\u0439 \u2013 \u0434\u043e\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c\u0441\u0442\u0432\u043e \u0432\u0430\u0448\u0438\u0445 \u0434\u0435\u044f\u043d\u0438\u0439.\" \\ --language_idx 'ru' <\/code><\/pre>\n<p>\u041d\u0430 \u0432\u044b\u0445\u043e\u0434\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u044e, \u043f\u0440\u0438\u0447\u0435\u043c \u0437\u0432\u0443\u043a\u043e\u0432\u0430\u044f \u0434\u043e\u0440\u043e\u0436\u043a\u0430 \u043f\u0443\u0441\u0442\u044c \u0438 \u043c\u0435\u0441\u0442\u0430\u043c\u0438 \u0443\u0449\u0435\u0440\u0431\u043d\u0430\u044f, \u043d\u043e \u0432 \u0446\u0435\u043b\u043e\u043c \u0433\u043e\u043b\u043e\u0441 \u0441\u043a\u043b\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043b\u0441\u044f \u0431\u043e\u043b\u0435\u0435 \u0447\u0435\u043c.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/966\/94d\/739\/96694d73964aba7b090c5cf8376ce14f.png\" width=\"2298\" height=\"361\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/966\/94d\/739\/96694d73964aba7b090c5cf8376ce14f.png\"\/><\/figure>\n<h2>\u041d\u0430\u0447\u0438\u043d\u0430\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0439 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440<\/h2>\n<p>\u0422\u0430\u043a-\u0441, \u0442\u0435\u043f\u0435\u0440\u044c \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043c<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/a05\/486\/466\/a054864664e665c4be8522a2e5006791.png\" width=\"2543\" height=\"1240\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/a05\/486\/466\/a054864664e665c4be8522a2e5006791.png\"\/><\/figure>\n<p>\u0412\u0438\u0434\u0430\u0442\u044c \u0433\u0434\u0435-\u0442\u043e \u0432 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0435 \u044f\u0437\u044b\u043a\u0430 \u043d\u0430\u043a\u043e\u0441\u044f\u0447\u0438\u043b \u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u0442\u0441\u044f \u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u0438\u0439<\/p>\n<pre><code>python cli-main.py gen_lookup_tables --lang=ruRU<\/code><\/pre>\n<p>\u0421\u0442\u0440\u0430\u0448\u043d\u043e, \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u0447\u0442\u043e 17\u043a \u0430\u0443\u0434\u0438\u043e\u0444\u0430\u0439\u043b\u043e\u0432 \u0431\u0435\u0434\u043d\u044b\u0439 Codespace \u0431\u0443\u0434\u0435\u0442 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c, \u0441 \u0434\u0440\u0443\u0433\u043e\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u044b, \u0430 \u0437\u0430\u0447\u0435\u043c \u044f \u0442\u043e\u0433\u0434\u0430 \u0437\u0430 \u043f\u043e\u0434\u043f\u0438\u0441\u043a\u0443 \u043f\u043b\u0430\u0447\u0443?<\/p>\n<p>\u041e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u0447\u0442\u043e \u044d\u0442\u043e\u0442 \u0432\u0441\u0440\u0430\u0442\u044b\u0439 gen_lookup_tables \u0441\u043e\u0437\u0434\u0430\u0441\u0442 \u0432 output \u043f\u0430\u043f\u043a\u0435 \u043d\u0443\u0436\u043d\u044b\u0435 \u043c\u043d\u0435 \u0442\u0435\u043a\u0441\u0442\u044b \u043a\u0432\u0435\u0441\u0442\u043e\u0432, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0441\u0432\u0430\u043f\u0430\u044e \u043c\u0435\u0441\u0442\u0430\u043c\u0438 \u0442\u0435\u043a\u0441\u0442\u044b \u043a\u0432\u0435\u0441\u0442\u043e\u0432 \u0432 input \u043f\u0430\u043f\u043a\u0443 \u043e\u0431\u044b\u0447\u043d\u044b\u043c \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u043c.<\/p>\n<p>\u0427\u0442\u043e \u0437\u0430\u0431\u0430\u0432\u043d\u043e &#8212; \u044d\u0442\u043e \u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u0438\u0439 \u0442\u0435\u043a\u0441\u0442 \u0441 \u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u0438\u043c \u0433\u043e\u043b\u043e\u0441\u043e\u043c, \u043d\u043e \u0432 \u0440\u0443\u0441\u0441\u043a\u0438\u0439 \u0433\u043e\u043b\u043e\u0441, \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u0440\u0443\u043d\u0433\u043b\u0438\u0448 \u0432 \u0447\u0438\u0441\u0442\u043e\u043c \u0432\u0438\u0434\u0435 \u043e\u0442 \u043d\u0435\u0439\u0440\u043e\u0441\u0435\u0442\u0438, \u0445\u043e\u0442\u044c \u0432 \u043a\u0438\u043d\u043e \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0439, \u043d\u043e \u0441 \u044d\u0442\u0438\u043c \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u044b \u0431\u0443\u0434\u0443\u0442 \u043f\u043e\u0442\u043e\u043c<\/p>\n<p><strong>\u041f\u0440\u0438\u043c\u0435\u0440 &#8212; <\/strong><a href=\"https:\/\/raw.githubusercontent.com\/the-homeless-god\/wow-voiceover\/master\/assets\/video\/10-complete.mp3\" rel=\"noopener noreferrer nofollow\">https:\/\/raw.githubusercontent.com\/the-homeless-god\/wow-voiceover\/master\/assets\/video\/10-complete.mp3<\/a><\/p>\n<p>\u0418 \u0432\u043e\u0442 \u043e\u0448\u0438\u0431\u043a\u0438 \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/797\/eb0\/c83\/797eb0c8322e15c97e143726a17e6541.png\" width=\"2509\" height=\"867\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/797\/eb0\/c83\/797eb0c8322e15c97e143726a17e6541.png\"\/><\/figure>\n<h2>\u0423\u043b\u0443\u0447\u0448\u0430\u0435\u043c \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438<\/h2>\n<p>\u041e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u043d\u0435 \u0432\u0441\u0435 \u043a\u0432\u0435\u0441\u0442\u044b \u043f\u0435\u0440\u0435\u0432\u0435\u0434\u0435\u043d\u044b, \u0430 \u0437\u043d\u0430\u0447\u0438\u0442 \u0442\u043e\u043f\u0430\u0435\u043c \u0441\u044e\u0434\u0430 <a href=\"https:\/\/www.hiveworkshop.com\/threads\/warcraft-iii-medivh-soundset.337074\/\" rel=\"noopener noreferrer nofollow\">https:\/\/www.hiveworkshop.com\/threads\/warcraft-iii-medivh-soundset.337074\/<\/a> \u0438 \u0434\u043e\u0441\u0442\u0430\u0435\u043c \u0433\u043e\u043b\u043e\u0441 \u041c\u0435\u0434\u0438\u0432\u0430, \u0447\u0442\u043e\u0431\u044b \u043a\u0430\u043a \u0432 \u0442\u0440\u0435\u0442\u044c\u0435\u043c \u0432\u0430\u0440\u043a\u0440\u0430\u0444\u0442\u0435 \u0437\u0430\u043a\u0430\u0434\u0440\u0430\u0432\u044b\u0439 \u0433\u043e\u043b\u043e\u0441 \u0431\u044b\u043b \u0434\u043b\u044f \u0441\u043b\u0443\u0447\u0430\u0435\u0432, \u043a\u043e\u0433\u0434\u0430 \u0433\u043e\u043b\u043e\u0441\u0430 \u043d\u0435\u0442<\/p>\n<p>\u041d\u043e \u0442\u0430\u043c \u0432\u0441\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u043a\u043e\u0440\u043e\u0442\u043a\u0438\u0435, \u043d\u0430\u0448\u0435\u043b \u043d\u0430 YouTube <a href=\"https:\/\/www.youtube.com\/watch?v=3svAOHX7FLI\" rel=\"noopener noreferrer nofollow\">https:\/\/www.youtube.com\/watch?v=3svAOHX7FLI<\/a>, \u0441\u0435\u0439\u0447\u0430\u0441 \u0441\u0442\u0430\u0449\u0438\u043c \u0432\u0438\u0434\u0435\u043e\u0444\u0430\u0439\u043b \u0438 \u0441 ffmpeg \u0434\u043e\u0441\u0442\u0430\u043d\u0435\u043c \u043e\u0442\u0442\u0443\u0434\u0430 mp3.<br \/>\u041f\u043e\u043a\u0430 \u0442\u0430\u0449\u0438\u043b \u0444\u0430\u0439\u043b \u0447\u0435\u0440\u0435\u0437 ssyoutube \u0442\u0430\u043c \u0436\u0435 \u0441\u043a\u0430\u0447\u0430\u043b mp4 \u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u043b \u043a\u0430\u043a mp3. \u0422\u0430\u043a \u0447\u0442\u043e \u043d\u0435 \u0432 \u044d\u0442\u043e\u0442 \u0440\u0430\u0437, ffmpeg.<\/p>\n<p>\u041c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u0442\u0443\u043f\u0438\u0442\u044c \u043a\u0440\u0443\u0447\u0435 \u0438 \u043e\u0437\u0432\u0443\u0447\u0438\u0442\u044c \u0432\u0441\u0435 \u043a\u0432\u0435\u0441\u0442\u044b \u043c\u043e\u0438\u043c \u0433\u043e\u043b\u043e\u0441\u043e\u043c, \u043d\u043e \u044d\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u0441\u043b\u0438\u0448\u043a\u043e\u043c<\/p>\n<pre><code class=\"python\">  def tts(self, text: str, inputName: str, outputName: str, output_subfolder: str, language: str, forceGen: bool = False):         result = \"\"         outpath = os.path.join(SOUND_OUTPUT_FOLDER, output_subfolder, outputName)         inpath = os.path.join(SOUND_INPUT_FOLDER, output_subfolder, inputName)          if os.path.isfile(outpath) and forceGen is not True:             result = \"duplicate generation, skipping\"             return          # \u0432\u043e\u0442 \u0442\u0443\u0442 \u0434\u043e\u0431\u0430\u0432\u0438\u043b \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443, \u0447\u0442\u043e \u0435\u0441\u043b\u0438 input-sample \u043a\u0432\u0435\u0441\u0442\u0430 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442, \u0442\u043e \u043f\u0443\u0441\u0442\u044c \u0431\u0435\u0440\u0435\u0442 \u0433\u043e\u043b\u043e\u0441 \u041c\u0435\u0434\u0438\u0432\u0430         if os.path.isfile(inpath) is False:             inpath = DEFAULT_VOICE             return              self.convert(text, inpath, outpath, language)          result = f\"Audio file saved successfully!: {outpath}\"          return result <\/code><\/pre>\n<h2>\u041e\u0446\u0435\u043d\u0438\u0432\u0430\u0435\u043c \u0437\u0430\u0442\u0440\u0430\u0442\u044b<\/h2>\n<p>\u041d\u043e \u0447\u0442\u043e\u0431\u044b \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c 19784 \u0444\u0430\u0439\u043b\u0430 \u043f\u043e 30 \u0441\u0435\u043a\u0443\u043d\u0434 \u043a\u0430\u0436\u0434\u044b\u0439 \u043d\u0430\u0434\u043e 164 \u0447\u0430\u0441\u0430 \u0432\u0440\u043e\u0434\u0435 \u0431\u044b<br \/>  ((19784 * 30) \/ 60) \/ 60 \/ 24 &#8212; \u044d\u0442\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e 7 \u0434\u043d\u0435\u0439 \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438<\/p>\n<p>\u0410 \u0435\u0441\u043b\u0438 \u0440\u0430\u0441\u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u0438\u043c \u0432 10 \u043f\u043e\u0442\u043e\u043a\u043e\u0432, \u0442\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u043c 16 \u0447\u0430\u0441\u043e\u0432, \u043f\u043e\u0435\u0445\u0430\u043b\u0438<\/p>\n<p>\u0410 \u0435\u0441\u043b\u0438 \u0432\u044b\u0440\u0435\u0437\u0430\u0442\u044c \u0430\u043b\u044c\u044f\u043d\u0441, \u0442\u043e \u0432\u044b\u0439\u0434\u0435\u0442 \u0435\u0449\u0435 \u0432 2 \u0440\u0430\u0437\u0430 \u0431\u044b\u0441\u0442\u0440\u0435\u0435.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/2a3\/f32\/0ed\/2a3f320edd51c0d5510d536340e0c7c5.png\" width=\"3438\" height=\"1268\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/2a3\/f32\/0ed\/2a3f320edd51c0d5510d536340e0c7c5.png\"\/><\/figure>\n<p>\u0418 \u043f\u043e\u043a\u0430 \u044d\u0442\u0430 \u0448\u0442\u0443\u043a\u0430 \u0433\u0435\u043d\u0435\u0440\u0438\u0442\u0441\u044f \u044f \u043f\u043e\u0434\u0443\u043c\u0430\u043b, \u043b\u0430\u0434\u043d\u043e \u0447\u0435\u0440\u0442 \u0441 \u043d\u0438\u043c \u0437\u0430\u043f\u0443\u0449\u0443 \u043d\u0430 \u0441\u0432\u043e\u0451\u043c M1 Max Pro 64 128 Ultra Hard Nano Nice. \u041f\u043e\u0439\u0434\u0443 \u0441\u0442\u044f\u043d\u0443 \u0440\u0435\u043f\u0443. \u041d\u0430\u0434\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0444\u043e\u0440\u043a \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0439 \u0438 \u0437\u0430\u043a\u043e\u043c\u043c\u0438\u0442\u0438\u0442\u044c \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u0438\u0435 \u0430\u0443\u0434\u0438\u043e\u0444\u0430\u0439\u043b\u044b. \u0414\u0430 \u043d\u0430 +1\u0433\u0431 \u0432 \u0440\u0435\u043f\u043e, \u043d\u043e \u043c\u043d\u0435 \u043b\u0435\u043d\u044c \u043f\u0435\u0440\u0435\u043a\u0430\u0447\u0438\u0432\u0430\u0442\u044c \u0430\u0440\u0445\u0438\u0432\u044b. \u0410 \u043f\u043e\u0442\u043e\u043c \u0435\u0441\u043b\u0438 \u043d\u0430\u0434\u043e \u0431\u0443\u0434\u0435\u0442 &#8212; \u0440\u0435\u0431\u044f\u0442\u0430 \u043e\u0442\u043a\u0430\u0442\u044f\u0442 \u043a\u043e\u043c\u043c\u0438\u0442, \u0434\u0435\u043b\u043e\u0432-\u0442\u043e.<\/p>\n<p>\u0425\u043e\u0442\u044f \u043d\u0435, \u043d\u0435 \u0431\u0443\u0434\u0443, \u0430 \u0442\u043e \u043f\u043e\u0442\u043e\u043c \u043a\u043e\u043c\u043c\u0438\u0442 \u043d\u0435 \u043f\u0440\u0438\u043c\u0443\u0442 \u0435\u0449\u0435.<\/p>\n<p>\u041d\u0430\u0434\u043e \u0430\u0440\u0445\u0438\u0432 \u043e\u043f\u044f\u0442\u044c \u043a\u0430\u0447\u0430\u0442\u044c, \u0432 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u0433\u0434\u0435-\u0442\u043e \u044d\u0442\u043e \u0431\u044b\u043b\u043e)<\/p>\n<pre><code class=\"bash\">wget https:\/\/github.com\/mrthinger\/wow-voiceover\/releases\/download\/v1.3.1\/AI_VoiceOverData_Vanilla-v1.0.0.zip  unzip translator\/assets\/wow-classic-en\/AI_VoiceOverData_Vanilla-v1.0.0.zip<\/code><\/pre>\n<h2>\u041f\u044b\u0442\u0430\u0435\u043c\u0441\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c M1 &amp; Metal Accelerator \u0432 PyTorch<\/h2>\n<p>\u041f\u043e\u043a\u0430 \u043a\u0430\u0447\u0430\u043b \u043f\u043e\u043d\u044f\u043b, \u0447\u0442\u043e \u0432 M1 \u043c\u043e\u0436\u043d\u043e \u0432\u0437\u044f\u0442\u044c Metal Accelerator, \u0447\u0442\u043e\u0431\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c GPU &#8212; <a href=\"https:\/\/developer.apple.com\/metal\/pytorch\/\" rel=\"noopener noreferrer nofollow\">https:\/\/developer.apple.com\/metal\/pytorch\/<\/a><\/p>\n<p>\u041e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u0447\u0442\u043e \u0442\u0430\u043c \u0438 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043f\u043e-\u0434\u0440\u0443\u0433\u043e\u043c\u0443 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442, \u043c\u0434\u0435<\/p>\n<pre><code class=\"bash\">pip3 install --pre -r requirements.txt --index-url https:\/\/download.pytorch.org\/whl\/nightly\/cpu<\/code><\/pre>\n<p>\u0418 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u0434\u0435\u0432\u0430\u0439\u0441\u0430 \u0431\u043e\u043b\u0435\u0437\u043d\u0435\u043d\u043d\u043e\u0435<\/p>\n<pre><code># Get device device = \"cpu\"  if torch.backends.mps.is_available():     device = torch.device(\"mps\")     x = torch.ones(1, device=device)     print (x) else:     print (\"MPS device not found.\")<\/code><\/pre>\n<p>\u0414\u0430 \u0438 \u0435\u0433\u043e \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430, \u0430\u0436 \u043d\u0430 \u0431\u0430\u0433 \u043d\u0430\u0442\u043a\u043d\u0443\u043b\u0441\u044f, \u0437\u0430\u0441\u043f\u0435\u043a\u0430\u043b \u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u043b workaround \u0434\u043b\u044f \u0447\u0435\u043b\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0442\u043e\u0436\u0435 \u0432\u0447\u0435\u0440\u0430 \u0432\u0438\u0434\u0438\u043c\u043e \u0441 \u044d\u0442\u0438\u043c \u0441\u0442\u043e\u043b\u043a\u043d\u0443\u043b\u0441\u044f <a href=\"https:\/\/github.com\/coqui-ai\/TTS\/issues\/3758\" rel=\"noopener noreferrer nofollow\">https:\/\/github.com\/coqui-ai\/TTS\/issues\/3758<\/a><\/p>\n<h2>\u0418\u0449\u0435\u043c \u043f\u0443\u0442\u0438 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u0432\u043e\u0440\u043a\u0435\u0440\u043e\u0432, \u0442\u0440\u0435\u0434\u043e\u0432, \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u0435\u0439 \u0438 \u043b\u044e\u0431\u044b\u0445 \u0434\u0440\u0443\u0433\u0438\u0445 \u0441\u043b\u043e\u0432<\/h2>\n<p>\u0420\u0435\u0448\u0438\u043b \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044e \u0434\u043b\u044f \u043e\u0434\u043d\u043e\u0439 \u0447\u0430\u0441\u0442\u0438, \u0430 \u0434\u043b\u044f \u0434\u0440\u0443\u0433\u043e\u0439 \u0432 Codespaces, \u0432 \u043e\u0447\u0435\u0440\u0435\u0434\u043d\u043e\u0439 \u0440\u0430\u0437 \u0430\u043f\u043d\u0443\u0432 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u043a\u0443 \u043d\u0430 16 \u044f\u0434\u0435\u0440, \u0443 \u043d\u0438\u0445 \u043a\u0441\u0442\u0430\u0442\u0438 \u0435\u0441\u0442\u044c \u043a\u0440\u0443\u0442\u0430\u044f \u0444\u0438\u0447\u0430 \u043f\u043e-\u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u043d\u0430 \u0432\u0441\u0435 \u0442\u0430\u0447\u043a\u0438 \u0442\u044f\u043d\u0443\u0442\u044c \u0432\u0430\u0448\u0438 dotfiles, \u043c\u0435\u043b\u043e\u0447\u044c, \u0430 \u043f\u0440\u0438\u044f\u0442\u043d\u043e<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/f49\/ed0\/a8d\/f49ed0a8decda9998cc18a44b8ea504d.png\" alt=\"\u041c\u043e\u0438 dotfiles \u0442\u0443\u0442 - https:\/\/github.com\/the-homeless-god\/dotfiles, \u0437\u0432\u0435\u0437\u0434\u043e\u0447\u043a\u0443 \u0442\u0443\u0434\u0430 \u043f\u043e\u0441\u0442\u0430\u0432\u044c \u0438 \u0434\u0430\u043b\u044c\u0448\u0435 \u0438\u0434\u0438\" title=\"\u041c\u043e\u0438 dotfiles \u0442\u0443\u0442 - https:\/\/github.com\/the-homeless-god\/dotfiles, \u0437\u0432\u0435\u0437\u0434\u043e\u0447\u043a\u0443 \u0442\u0443\u0434\u0430 \u043f\u043e\u0441\u0442\u0430\u0432\u044c \u0438 \u0434\u0430\u043b\u044c\u0448\u0435 \u0438\u0434\u0438\" width=\"1228\" height=\"171\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/f49\/ed0\/a8d\/f49ed0a8decda9998cc18a44b8ea504d.png\"\/><\/p>\n<div><figcaption>\u041c\u043e\u0438 dotfiles \u0442\u0443\u0442 &#8212; <a href=\"https:\/\/github.com\/the-homeless-god\/dotfiles\" rel=\"noopener noreferrer nofollow\">https:\/\/github.com\/the-homeless-god\/dotfiles<\/a>, \u0437\u0432\u0435\u0437\u0434\u043e\u0447\u043a\u0443 \u0442\u0443\u0434\u0430 \u043f\u043e\u0441\u0442\u0430\u0432\u044c \u0438 \u0434\u0430\u043b\u044c\u0448\u0435 \u0438\u0434\u0438<\/figcaption><\/div>\n<\/figure>\n<p>\u0412\u043e\u0442 \u0442\u0435\u043f\u0435\u0440\u044c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 (\u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043b 8 \u0432\u043e\u0440\u043a\u0435\u0440\u043e\u0432)<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/091\/4fb\/077\/0914fb0770298d2da6a929057388c3e6.png\" alt=\"pip install bpytop, \u0435\u0441\u043b\u0438 \u0447\u0442\u043e\" title=\"pip install bpytop, \u0435\u0441\u043b\u0438 \u0447\u0442\u043e\" width=\"1678\" height=\"540\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/091\/4fb\/077\/0914fb0770298d2da6a929057388c3e6.png\"\/><\/p>\n<div><figcaption>pip install bpytop, \u0435\u0441\u043b\u0438 \u0447\u0442\u043e<\/figcaption><\/div>\n<\/figure>\n<p>\u041d\u043e \u0432\u043e\u0442 \u0431\u0435\u0434\u0430 &#8212; \u0443 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0432 \u0433\u0434\u0435-\u0442\u043e \u043a\u043e\u0441\u044f\u043a \u0441 \u0432\u043e\u0440\u043a\u0435\u0440\u0430\u043c\u0438 \u0438 \u043e\u043d\u0438 \u043f\u0430\u0434\u0430\u044e\u0442 \u0441 index of out range, \u0442\u043e \u0435\u0441\u0442\u044c \u0443 \u043d\u0435\u0433\u043e \u0447\u0442\u043e-\u0442\u043e \u0442\u0430\u043c \u0441 \u043c\u0430\u0441\u0441\u0438\u0432\u0430\u043c\u0438 \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u0432 \u0438\u043d\u0434\u0435\u043a\u0441\u044b, \u043d\u043e \u0431\u0435\u0434\u0430 \u043d\u0435 \u0432 \u044d\u0442\u043e\u043c, \u043c\u0443\u043b\u044c\u0442\u0438-\u0432\u043e\u0440\u043a\u0435\u0440\u044b \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u0434\u043e\u043b\u044c\u0448\u0435 \u043e\u0434\u043d\u043e\u0433\u043e \u0432\u043e\u0440\u043a\u0435\u0440\u0430<\/p>\n<p>\u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043b \u0432 \u043e\u0434\u0438\u043d \u043f\u043e\u0442\u043e\u043a. \u042d\u0442\u043e \u0441\u0430\u043c\u0438 \u0437\u043d\u0430\u0435\u0442\u0435 \u0447\u0442\u043e.<\/p>\n<p>\u0427\u0442\u043e \u0441\u0430\u043c\u043e\u0435 \u0441\u043c\u0435\u0448\u043d\u043e\u0435 \u044d\u0442\u043e \u043a\u043e\u0441\u044f\u043a\u0438, \u0430 \u0441 \u043d\u0438\u043c\u0438 \u043f\u0440\u044f\u043c \u0437\u0430\u043c\u0435\u0447\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0432 \u0440\u0435\u0447\u0438. \u0422\u043e \u0435\u0441\u0442\u044c \u043a\u043e\u0433\u0434\u0430 \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u0436 \u0433\u043e\u0431\u043b\u0438\u043d \u0433\u043e\u0432\u043e\u0440\u0438\u0442 &#171;\u0431\u0435\u0437\u0434\u043d\u0410&#187; \u0432\u043c\u0435\u0441\u0442\u043e &#171;\u0431\u0415\u0437\u0434\u043d\u0430&#187;, \u0442\u043e \u044d\u0442\u043e \u043a\u0430\u043a \u043d\u0430\u0440\u0435\u0447\u0438\u0435 \u0438\u043b\u0438 \u0430\u043a\u0446\u0435\u043d\u0442, \u0447\u0442\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u0436\u0438\u0432\u043d\u043e\u0441\u0442\u0438 \u044f\u0437\u044b\u043a\u0443. \u0413\u0440\u0443\u0431\u043e \u0433\u043e\u0432\u043e\u0440\u044f \u043a\u0430\u043a &#171;\u0437\u0432\u041e\u043d\u0438\u0442&#187; \u0438 &#171;\u0437\u0432\u043e\u043d\u0418\u0442&#187;. \u0422\u0430\u043a \u0447\u0442\u043e \u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c.<\/p>\n<p>\u041f\u0440\u0438\u043c\u0435\u0440\u044b:<\/p>\n<p><a href=\"https:\/\/github.com\/the-homeless-god\/wow-voiceover\/raw\/master\/assets\/video\/10-accept.mp3\" rel=\"noopener noreferrer nofollow\">https:\/\/github.com\/the-homeless-god\/wow-voiceover\/raw\/master\/assets\/video\/10-accept.mp3<\/a><br \/><a href=\"https:\/\/github.com\/the-homeless-god\/wow-voiceover\/raw\/master\/assets\/video\/33-accept.mp3\" rel=\"noopener noreferrer nofollow\">https:\/\/github.com\/the-homeless-god\/wow-voiceover\/raw\/master\/assets\/video\/33-accept.mp3<\/a><br \/><a href=\"https:\/\/github.com\/the-homeless-god\/wow-voiceover\/raw\/master\/assets\/video\/m-f07f5e6d40044eae745e47cfd0b2ac14.mp3\" rel=\"noopener noreferrer nofollow\">https:\/\/github.com\/the-homeless-god\/wow-voiceover\/raw\/master\/assets\/video\/m-f07f5e6d40044eae745e47cfd0b2ac14.mp3<\/a><\/p>\n<p>\u0417\u0430 15 \u043c\u0438\u043d\u0443\u0442 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u043e \u0432\u0441\u0435\u0433\u043e \u043b\u0438\u0448\u044c 114\/19784 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432.<\/p>\n<p>\u0412\u0438\u0434\u0438\u043c\u043e \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0442\u044c\u0441\u044f \u0433\u0434\u0435 \u0442\u0430\u043c \u0432 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u0445 \u043c\u043d\u043e\u0433\u043e\u043f\u043e\u0442\u043e\u043a\u0430 \u043d\u0430\u043a\u043e\u0441\u044f\u0447\u0438\u043b\u0438 \u043e\u043d\u0438. \u041f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043e\u0431\u0435\u0449\u0430\u0435\u0442 \u043c\u0438\u043d\u0438\u043c\u0443\u043c 133 \u0447\u0430\u0441\u0430 \u0432 \u043e\u0434\u0438\u043d \u043f\u043e\u0442\u043e\u043a. \u041d\u0430\u0434\u043e \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f \u0441 Google Collab \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c, \u0430 \u043f\u043e\u043a\u0430 \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0435\u0440\u0435\u0432\u0435\u0440\u043d\u0443\u043b pandas dataframe <code>df = df.sort_index(ascending=False)<\/code> \u0447\u0442\u043e\u0431\u044b \u043d\u0430 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u043a\u0435 \u0441 \u043a\u043e\u043d\u0446\u0430 \u0441\u043f\u0438\u0441\u043a\u0430 \u043f\u043e\u0439\u0442\u0438, \u043f\u043e\u043a\u0430 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e \u0438\u0434\u0443 \u0441\u043d\u0430\u0447\u0430\u043b\u0430. \u0413\u043b\u0430\u0432\u043d\u043e\u0435 \u0443\u0441\u043f\u0435\u0432\u0430\u0442\u044c \u0441\u0438\u043d\u043a\u0430\u0442\u044c \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438.<\/p>\n<h2>\u0414\u0443\u043c\u0430\u0435\u043c, \u0430 \u043c\u043e\u0436\u0435\u0442 \u0432\u043c\u0435\u0441\u0442\u043e CPU \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c GPU?<\/h2>\n<p>\u041f\u0440\u043e\u0448\u0435\u043b \u0447\u0430\u0441 &#8212; \u043d\u0430 mac \u0432\u044b\u0448\u043b\u043e \u043f\u043e\u0440\u044f\u0434\u043a\u0430 2%, \u043d\u0430 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u043a\u0435 3%, \u0440\u0430\u0437\u043d\u0438\u0446\u0430 \u0432 \u0442\u043e\u043c \u0447\u0442\u043e \u043d\u0430 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u043a\u0435 \u0441 \u043a\u043e\u043d\u0446\u0430 \u0441\u043f\u0438\u0441\u043a\u0430 \u043f\u043e\u0448\u043b\u0438 \u043a\u043e\u0440\u043e\u0442\u043a\u0438\u0435 \u0444\u0430\u0439\u043b\u044b \u0441 \u043d\u0430\u0431\u043e\u0440\u043e\u043c \u0444\u0440\u0430\u0437 \u0432 10 \u0441\u043b\u043e\u0432, \u0430 \u043d\u0430 \u043c\u0430\u043a\u0435 \u043a\u0440\u0443\u0442\u044f\u0442\u0441\u044f \u0442\u0435\u043a\u0441\u0442\u044b \u043a\u0432\u0435\u0441\u0442\u043e\u0432. \u0412 \u0446\u0435\u043b\u043e\u043c \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u043e 1\u043a \u0438\u0437 19\u043a. \u0421\u0435\u0439\u0447\u0430\u0441 \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u044e \u043e\u0436\u0438\u0432\u0438\u0442\u044c \u0432\u0438\u043d\u0434\u043e\u0432\u044b\u0439 \u043a\u043e\u043c\u043f \u043d\u0430 AMD RX 580 \u0438 \u0441\u0440\u0430\u0432\u043d\u0438\u0442\u044c \u043a\u0430\u043a \u0436\u0435 \u0431\u044b\u0441\u0442\u0440\u043e \u0434\u0435\u043b\u043e \u043f\u043e\u0439\u0434\u0451\u0442 \u0441 \u0432\u0438\u0434\u0435\u043e\u043a\u0430\u0440\u0442\u043e\u0439. \u0410 \u0432 \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u0438 \u043e\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u043c \u0437\u043d\u0430\u043a\u043e\u043c\u044b\u0445<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/091\/913\/b2e\/091913b2e14593130ad9597808815639.png\" width=\"925\" height=\"253\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/091\/913\/b2e\/091913b2e14593130ad9597808815639.png\"\/><\/figure>\n<p>\u041f\u0440\u0438\u0447\u0435\u043c \u043c\u0430\u043a \u0433\u043e\u0432\u043e\u0440\u0438\u0442 \u0447\u0442\u043e \u0441\u043f\u0440\u0430\u0432\u0438\u0442\u0441\u044f \u0437\u0430 33 \u0447\u0430\u0441\u0430, \u0430 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u043a\u0430 \u0435\u0441\u043b\u0438 \u0434\u0435\u0440\u043d\u0443\u0442\u044c neofetch \u0433\u043e\u0432\u043e\u0440\u0438\u0442 \u0437\u0430 54 \u0447\u0430\u0441\u0430 (\u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043a\u0441\u0442\u0430\u0442\u0438 \u0441\u044e\u0440\u043f\u0440\u0438\u0437-\u0441\u044e\u0440\u043f\u0440\u0438\u0437 \u0430\u0440\u0445\u0438\u0432\u0438\u0440\u043e\u0432\u0430\u043d, \u0432\u0440\u043e\u0434\u0435 \u0431\u044b \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0440\u0430\u0437\u0440\u0430\u0431 \u0443\u0448\u0435\u043b \u043d\u0430 \u0433\u0443\u0441\u0438\u043d\u043d\u0443\u044e \u0444\u0435\u0440\u043c\u0443, \u0441\u0443\u0434\u044f \u043f\u043e \u0442\u0440\u0435\u0434\u0443 \u0432 \u0440\u0435\u0434\u0434\u0438\u0442\u0435)<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/01d\/400\/59a\/01d40059a31a8d7b44f2c660ba41bac6.png\" width=\"1075\" height=\"553\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/01d\/400\/59a\/01d40059a31a8d7b44f2c660ba41bac6.png\"\/><\/figure>\n<p>\u0421\u0438\u0436\u0443 \u0433\u0435\u043d\u0435\u0440\u044e<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/f83\/d6b\/196\/f83d6b196d4a05df86608cd141ccdb42.png\" width=\"3440\" height=\"1440\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/f83\/d6b\/196\/f83d6b196d4a05df86608cd141ccdb42.png\"\/><\/figure>\n<p>\u041f\u043e\u043a\u0430 \u0442\u0430\u043c \u0432\u0441\u0451 \u0435\u0449\u0451 \u043f\u0435\u0442\u0443\u0445\u043e\u043d \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442 \u043d\u0430\u043c \u0438\u0437-\u043f\u043e\u0434 torch-\u0430 \u0430\u0443\u0434\u0438\u043e\u0444\u0430\u0439\u043b\u044b \u043f\u043e\u0439\u0434\u0443 \u0447\u0442\u043e \u043b\u0438 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0430\u0434\u0434\u043e\u043d\u0443 \u0437\u0430\u043f\u043e\u043b\u043d\u044e<\/p>\n<p>\u0421\u043f\u0443\u0441\u0442\u044f \u043f\u0430\u0440\u0443 \u0447\u0430\u0441\u043e\u0432 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u043a\u0430 \u0441\u044a\u0435\u043b\u0430 \u0432\u0441\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u044b \u043f\u043e \u043b\u0438\u043c\u0438\u0442\u0430\u043c \u043f\u043e\u0434\u043f\u0438\u0441\u043a\u0438<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/570\/d5b\/d99\/570d5bd99b5d53a4f720cecd0bfbcef3.png\" alt=\"6,5 \u0447\u0430\u0441\u043e\u0432 \u0438 \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f 47,5 \u043f\u043e \u0435\u0451 \u043e\u0446\u0435\u043d\u043a\u0430\u043c\" title=\"6,5 \u0447\u0430\u0441\u043e\u0432 \u0438 \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f 47,5 \u043f\u043e \u0435\u0451 \u043e\u0446\u0435\u043d\u043a\u0430\u043c\" width=\"2205\" height=\"360\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/570\/d5b\/d99\/570d5bd99b5d53a4f720cecd0bfbcef3.png\"\/><\/p>\n<div><figcaption>6,5 \u0447\u0430\u0441\u043e\u0432 \u0438 \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f 47,5 \u043f\u043e \u0435\u0451 \u043e\u0446\u0435\u043d\u043a\u0430\u043c<\/figcaption><\/div>\n<\/figure>\n<p>\u0412\u044b\u043a\u0430\u0447\u0438\u0432\u0430\u044e \u0432\u0441\u0451 \u0447\u0442\u043e \u043e\u043d\u0430 \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u043b\u0430 \u0441 \u043a\u043e\u043d\u0446\u0430 \u0441\u043f\u0438\u0441\u043a\u0430, \u043f\u0430\u043a\u0443\u044e \u0432 \u0430\u0440\u0445\u0438\u0432 \u0438 \u043e\u0442\u0434\u0430\u044e \u043f\u043b\u0435\u043c\u044f\u043d\u043d\u0438\u043a\u0443 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0430 \u0435\u0433\u043e Nvidia 2060 \u0447\u0442\u043e-\u0442\u043e \u0442\u0430\u043c<\/p>\n<p>\u041f\u0440\u0438\u0447\u0451\u043c \u043d\u0430 Mac Studio \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0441\u0442\u0430\u0431\u0438\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043b\u0430\u0441\u044c \u043d\u0430 16s-24s \u043d\u0430 \u0441\u0442\u0440\u043e\u043a\u0443, \u043d\u043e \u0438 \u0442\u0430\u043c \u043f\u043e\u043a\u0430 \u0442\u043e\u0440\u043c\u043e\u0436\u0443 \u043f\u0440\u043e\u0446\u0435\u0441\u0441, \u0447\u0442\u043e\u0431\u044b \u0441\u043b\u0438\u0442\u044c \u0444\u0430\u0439\u043b\u044b \u0432 \u043e\u0434\u043d\u0443 \u0441\u0438\u0441\u0442\u0435\u043c\u0443<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/4c5\/027\/089\/4c5027089ec408132074d373c4aa29fd.png\" alt=\"7 \u0447\u0430\u0441\u043e\u0432 \u0438 \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f 81 \u0447\u0430\u0441 \u043f\u043e \u0435\u0451 \u043e\u0446\u0435\u043d\u043a\u0430\u043c\" title=\"7 \u0447\u0430\u0441\u043e\u0432 \u0438 \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f 81 \u0447\u0430\u0441 \u043f\u043e \u0435\u0451 \u043e\u0446\u0435\u043d\u043a\u0430\u043c\" width=\"2223\" height=\"218\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/4c5\/027\/089\/4c5027089ec408132074d373c4aa29fd.png\"\/><\/p>\n<div><figcaption>7 \u0447\u0430\u0441\u043e\u0432 \u0438 \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f 81 \u0447\u0430\u0441 \u043f\u043e \u0435\u0451 \u043e\u0446\u0435\u043d\u043a\u0430\u043c<\/figcaption><\/div>\n<\/figure>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0441\u043a\u043b\u0435\u0439\u043a\u0438 7 \u0447\u0430\u0441\u043e\u0432 \u0440\u0430\u0431\u043e\u0442\u044b: 5 directories, 1937 files<\/p>\n<p>\u041d\u0430 Windows \u0432 \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u0442\u043e\u0436\u0435 \u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u043d\u043e, \u0432\u0441\u0440\u0430\u0442\u0430\u044f cuda, \u0434\u043e\u043b\u0433\u043e \u043f\u043e\u0431\u0435\u0436\u0434\u0430\u043b\u0438 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438, \u043d\u043e \u0441\u043f\u0440\u0430\u0432\u0438\u043b\u0438\u0441\u044c, \u0441\u0435\u0439\u0447\u0430\u0441 \u0432\u0441\u0451 \u0435\u0449\u0451 \u043f\u044b\u0442\u0430\u0435\u043c\u0441\u044f \u043f\u043e\u043d\u044f\u0442\u044c \u043f\u043e\u0447\u0435\u043c\u0443 \u043c\u043d\u043e\u0433\u043e\u043f\u043e\u0442\u043e\u0447\u043d\u043e\u0441\u0442\u044c \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442, \u0442\u0430\u043c \u0447\u0442\u043e-\u0442\u043e \u0434\u043b\u044f tty \u043d\u0435 \u043e\u0442\u0440\u0430\u0431\u0430\u044b\u0432\u0430\u0435\u0442.<\/p>\n<p>\u0420\u0435\u0448\u0438\u043b\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c 2 powershell-\u0430 \u0432 \u0440\u0430\u0437\u043d\u044b\u0435 \u0441\u0442\u043e\u0440\u043e\u043d\u044b<\/p>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/591\/1fd\/d94\/5911fdd947874babf92cdd023f28e4f0.png\" width=\"232\" height=\"73\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/591\/1fd\/d94\/5911fdd947874babf92cdd023f28e4f0.png\"\/><\/figure>\n<ul>\n<li>\n<p>\u041f\u0440\u043e\u0448\u043b\u043e \u0435\u0449\u0451 5 \u0447\u0430\u0441\u043e\u0432: 2500 + 6000 \u0438\u0437 19784, \u043d\u0430\u0434\u043e \u043a\u0430\u043a-\u0442\u043e \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u0438\u0442\u044c.<\/p>\n<p>\u041f\u043e\u0442\u0435\u0440\u044f\u0432 \u0442\u043e\u043d\u043d\u0443 \u0432\u0440\u0435\u043c\u0435\u043d\u0438, \u0432 \u043f\u043e\u043f\u044b\u0442\u043a\u0430\u0445 \u043f\u0435\u0440\u0435\u0431\u0438\u0440\u0430\u0442\u044c \u043c\u0443\u043b\u044c\u0442\u0438\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0438\u043d\u0433 \u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u0434\u0435\u0439\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u043c:<\/p>\n<ul>\n<li>\n<p>\u043d\u0430 \u043a\u0430\u0436\u0434\u044b\u0439 \u0442\u0440\u0435\u0434 \u043f\u0440\u0438 \u043a\u0430\u0436\u0434\u043e\u043c \u0444\u0430\u0439\u043b\u0435 \u0433\u0435\u043d\u0435\u0440\u0438\u0442\u044c TTS<\/p>\n<\/li>\n<li>\n<p>\u0443\u043a\u0430\u0437\u0430\u0442\u044c TTS \u043e\u0431\u0449\u0443\u044e \u0448\u0430\u0440\u0435\u043d\u043d\u0443\u044e \u043f\u0430\u043c\u044f\u0442\u044c<\/p>\n<\/li>\n<li>\n<p>\u0440\u0430\u0437\u0431\u0438\u0432\u0430\u0442\u044c \u0434\u0430\u0442\u0430\u0441\u0435\u0442 \u043d\u0430 \u0447\u0430\u043d\u043a\u0438<\/p>\n<\/li>\n<\/ul>\n<p>\u0418\u0437 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043a\u043e\u0432: \u041a\u0410\u0416\u0414\u042b\u0419 \u0424\u0410\u0419\u041b \u0411\u0423\u0414\u0415\u0422 \u041f\u041e\u0414\u041a\u041b\u042e\u0427\u0410\u0422\u042c\u0421\u042f \u041a \u041c\u041e\u0414\u0415\u041b\u0418<\/p>\n<p>\u0418\u0437 \u043f\u043b\u044e\u0441\u043e\u0432: \u043e\u043d\u043e \u0441\u0442\u0430\u043b\u043e \u0433\u0435\u043d\u0435\u0440\u0438\u0442\u0441\u044f \u0431\u044b\u0441\u0442\u0440\u0435\u0435 \u0432 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0432\u043e\u0440\u043a\u0435\u0440\u043e\u0432 \u0440\u0430\u0437, \u043f\u0440\u0438\u0447\u0435\u043c \u0447\u0442\u043e \u043b\u044e\u0431\u043e\u043f\u044b\u0442\u043d\u043e \u043e\u0431\u0449\u0430\u044f \u043f\u0430\u043c\u044f\u0442\u044c \u044d\u0442\u043e\u043c\u0443 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0443 \u0441\u043a\u043e\u0440\u0435\u0435 \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442 \u0447\u0435\u043c \u043d\u0435\u0442, \u0434\u0430 \u0438 \u0432\u0434\u043e\u0431\u0430\u0432\u043e\u043a \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 \u043e\u0442\u0434\u044b\u0445\u0430\u0435\u0442 \u0432 \u043c\u043e\u043c\u0435\u043d\u0442\u044b \u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u043c\u043e\u0434\u0435\u043b\u0438, \u0437\u0430\u0431\u0430\u0432\u043d\u043e.<\/p>\n<\/li>\n<\/ul>\n<pre><code class=\"python\">def convert(self, text, input_sound_path, output_sound_path, language):         print(input_sound_path)         print(output_sound_path)         print(text)         device = \"cpu\"          ttsai = TTS(\"tts_models\/multilingual\/multi-dataset\/xtts_v2\").to(device)         ttsai.share_memory()          return ttsai.tts_to_file(text=text, speaker_wav=input_sound_path, language=language, file_path=output_sound_path)       def process_rows_in_parallel(self, df, row_proccesing_fn, max_workers=STATIC_MAX_WORKERS):         total_rows = len(df)         bar_format = '{l_bar}{bar}| {n_fmt}\/{total_fmt} [{elapsed}&lt;{remaining}, {rate_fmt}] {postfix}'          # num_processes = mp.cpu_count()         num_processes = max_workers          chunk_size = int(df.shape[0]\/num_processes)          chunks = [df.iloc[df.index[i:i + chunk_size]] for i in range(0, df.shape[0], chunk_size)]         # chunks = [df.iloc[i:i + chunk_size,:] for i in range(0, df.shape[0], chunk_size)]                  with tqdm(total=total_rows, unit='rows', ncols=100, desc='Generating Audio', ascii=False, bar_format=bar_format, dynamic_ncols=True) as pbar:             with ThreadPoolExecutor(max_workers=max_workers) as executor:                 for chunk in chunks:                     for custom_message in zip(executor.map(row_proccesing_fn, chunk.itertuples())):                         pbar.set_postfix_str(custom_message)                         pbar.update(1) <\/code><\/pre>\n<h2>\u0418\u0449\u0435\u043c \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0441 GPU<\/h2>\n<p>\u0415\u0449\u0435 +5 \u0447\u0430\u0441\u043e\u0432, \u043d\u043e \u0443\u0436\u0435 \u0432 2 \u043f\u043e\u0442\u043e\u043a\u0430 \u0438 \u043d\u0430 2 \u043c\u0430\u0448\u0438\u043d\u0430\u0445: Mac Studio M1 Max \u0438 \u043a\u0430\u043a\u0430\u044f-\u0442\u043e \u0432\u0438\u043d\u0442\u0430 \u043d\u0430 Super 2060, \u0441\u0443\u043c\u043c\u0430\u0440\u043d\u043e \u0438\u043c\u0435\u0435\u043c 6907 + 3251 \u0438\u0437 19784, \u0442\u043e \u0435\u0441\u0442\u044c \u0437\u0430 \u043f\u0440\u043e\u0448\u0435\u0434\u0448\u0438\u0435 \u0433\u0440\u0443\u0431\u043e \u0433\u043e\u0432\u043e\u0440\u044f 12-13 \u0447\u0430\u0441\u043e\u0432 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0434\u043e\u0448\u043b\u043e \u043a \u043f\u043e\u043b\u043e\u0432\u0438\u043d\u0435, \u043f\u043e\u0439\u0434\u0443 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u044e \u0446\u0435\u043d\u044b \u043d\u0430 \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0435 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0441 GPU<\/p>\n<p>\u0418 \u0443\u0434\u0438\u0432\u043b\u044e\u0441\u044c \u0441 \u0446\u0435\u043d<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/2e5\/cc6\/2ad\/2e5cc62ad2681c31a8e147afd640a98e.png\" alt=\"\u041c\u0434\u0435\" title=\"\u041c\u0434\u0435\" width=\"1617\" height=\"1142\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/2e5\/cc6\/2ad\/2e5cc62ad2681c31a8e147afd640a98e.png\"\/><\/p>\n<div><figcaption>\u041c\u0434\u0435<\/figcaption><\/div>\n<\/figure>\n<p>\u0443 Selectel &#8212; 330\u043a \u0432 \u043c\u0435\u0441\u044f\u0446<br \/>\u0443 Reg.ru \u0443\u0436\u0435 \u043f\u043e \u0441\u043a\u0440\u043e\u043c\u043d\u0435\u0435<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/1cb\/69e\/668\/1cb69e6684fe205584beaf52465a4ae1.png\" alt=\"38 700 \u0440\u0443\u0431\u043b\u0435\u0439 \u0432 \u043c\u0435\u0441\u044f\u0446\" title=\"38 700 \u0440\u0443\u0431\u043b\u0435\u0439 \u0432 \u043c\u0435\u0441\u044f\u0446\" width=\"591\" height=\"1280\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/1cb\/69e\/668\/1cb69e6684fe205584beaf52465a4ae1.png\"\/><\/p>\n<div><figcaption>38 700 \u0440\u0443\u0431\u043b\u0435\u0439 \u0432 \u043c\u0435\u0441\u044f\u0446<\/figcaption><\/div>\n<\/figure>\n<p>\u041f\u043e\u043d\u0440\u0430\u0432\u0438\u043b\u0438\u0441\u044c \u0440\u0435\u0431\u044f\u0442\u0430 \u0441 iqhost, \u043d\u043e \u0443 \u043d\u0438\u0445 \u043e\u0442\u0432\u0430\u043b\u0438\u043b\u0441\u044f \u0441\u0430\u0439\u0442, \u0438 \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u0438\u0434\u0442\u0438 \u0434\u0430\u043b\u044c\u0448\u0435<\/p>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/ac7\/b25\/295\/ac7b25295fc740def5d6b098757f6ee0.png\" alt=\"\u0410 \u0446\u0435\u043d\u044b-\u0442\u043e \u0433\u0443\u043c\u0430\u043d\u043d\u044b\u0435, \u0436\u0430\u043b\u043a\u043e \u043b\u0435\u0433\u043b\u0438 \u0432 \u0442\u043e\u0442 \u043c\u043e\u043c\u0435\u043d\u0442\" title=\"\u0410 \u0446\u0435\u043d\u044b-\u0442\u043e \u0433\u0443\u043c\u0430\u043d\u043d\u044b\u0435, \u0436\u0430\u043b\u043a\u043e \u043b\u0435\u0433\u043b\u0438 \u0432 \u0442\u043e\u0442 \u043c\u043e\u043c\u0435\u043d\u0442\" width=\"375\" height=\"812\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/ac7\/b25\/295\/ac7b25295fc740def5d6b098757f6ee0.png\"\/><\/p>\n<div><figcaption>\u0410 \u0446\u0435\u043d\u044b-\u0442\u043e \u0433\u0443\u043c\u0430\u043d\u043d\u044b\u0435, \u0436\u0430\u043b\u043a\u043e \u043b\u0435\u0433\u043b\u0438 \u0432 \u0442\u043e\u0442 \u043c\u043e\u043c\u0435\u043d\u0442<\/figcaption><\/div>\n<\/figure>\n<p>\u0421\u0443\u0434\u044f \u043f\u043e \u0432\u0441\u0435\u043c\u0443 \u043c\u043e\u0449\u043d\u043e\u0441\u0442\u044c \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u0442\u044c \u043a\u0440\u0430\u0442\u043d\u043e \u0432\u044b\u0448\u0435<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/953\/2cd\/0f9\/9532cd0f932ccd59947cc0239cb4e2e1.png\" alt=\"\" title=\"\" width=\"1175\" height=\"701\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/953\/2cd\/0f9\/9532cd0f932ccd59947cc0239cb4e2e1.png\"\/><\/figure>\n<p>\u043f\u043e\u0448\u0435\u043b \u043d\u0430 \u0434\u0440\u0443\u0433\u043e\u0439 \u0441 \u043a\u0430\u043a\u0438\u043c\u0438-\u0442\u043e \u0443\u043b\u044c\u0442\u0440\u0430 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u043c\u0438<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/f4a\/f3b\/9c9\/f4af3b9c9febf75dd9d104107ebd064a.png\" alt=\"\u043a\u0441\u0442\u0430\u0442\u0438 \u044d\u0442\u0438 \u0440\u0435\u0431\u044f\u0442\u0430 \u043f\u043e\u043d\u0440\u0430\u0432\u0438\u043b\u0438\u0441\u044c - https:\/\/gpudc.ru\" title=\"\u043a\u0441\u0442\u0430\u0442\u0438 \u044d\u0442\u0438 \u0440\u0435\u0431\u044f\u0442\u0430 \u043f\u043e\u043d\u0440\u0430\u0432\u0438\u043b\u0438\u0441\u044c - https:\/\/gpudc.ru\" width=\"1232\" height=\"367\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/f4a\/f3b\/9c9\/f4af3b9c9febf75dd9d104107ebd064a.png\"\/><\/p>\n<div><figcaption>\u043a\u0441\u0442\u0430\u0442\u0438 \u044d\u0442\u0438 \u0440\u0435\u0431\u044f\u0442\u0430 \u043f\u043e\u043d\u0440\u0430\u0432\u0438\u043b\u0438\u0441\u044c &#8212; <a href=\"https:\/\/gpudc.ru\/account\" rel=\"noopener noreferrer nofollow\">https:\/\/gpudc.ru<\/a><\/figcaption><\/div>\n<\/figure>\n<p>\u0410\u0440\u0435\u043d\u0434\u043e\u0432\u0430\u043b\u043e\u0441\u044c<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/707\/0a2\/ab4\/7070a2ab42ff1df0896ebccb0fce2749.png\" alt=\"\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0431\u0443\u043a\u043e\u0432\u043e\u043a\" title=\"\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0431\u0443\u043a\u043e\u0432\u043e\u043a\" width=\"911\" height=\"640\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/707\/0a2\/ab4\/7070a2ab42ff1df0896ebccb0fce2749.png\"\/><\/p>\n<div><figcaption>\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0431\u0443\u043a\u043e\u0432\u043e\u043a<\/figcaption><\/div>\n<\/figure>\n<p>\u0412 \u0438\u0442\u043e\u0433\u0435 \u043f\u043e\u043a\u0430 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u043b \u0440\u0435\u043f\u043e \u0438 \u0432\u0441\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 &#8212; \u043f\u043e\u0442\u0435\u0440\u044f\u043b 300\u0440)<\/p>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/b01\/ccc\/d1f\/b01cccd1f12ee29292be9598b6291dd6.png\" alt=\"\u041d\u0443 \u0438 \u043f\u043e\u043a\u0430 assets \u043f\u0435\u0440\u0435\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u043b \u0435\u0449\u0435 300 \u0441\u044a\u0435\u043b)\" title=\"\u041d\u0443 \u0438 \u043f\u043e\u043a\u0430 assets \u043f\u0435\u0440\u0435\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u043b \u0435\u0449\u0435 300 \u0441\u044a\u0435\u043b)\" width=\"346\" height=\"87\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/b01\/ccc\/d1f\/b01cccd1f12ee29292be9598b6291dd6.png\"\/><\/p>\n<div><figcaption>\u041d\u0443 \u0438 \u043f\u043e\u043a\u0430 assets \u043f\u0435\u0440\u0435\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u043b \u0435\u0449\u0435 300 \u0441\u044a\u0435\u043b)<\/figcaption><\/div>\n<\/figure>\n<p>\u0410 \u043f\u043e\u0442\u043e\u043c \u0432\u0438\u0434\u0438\u0448\u044c \u043a\u043e\u0441\u044f\u043a\u0438 \u043b\u0438\u0431\u044b \u044d\u0442\u0438\u0445 \u0432\u0430\u0448\u0438\u0445 \u043f\u0435\u0442\u0443\u0445\u043e\u043d\u043e\u0432\u044b\u0445 \u0442\u043e\u0440\u0447\u0435\u0439<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/db6\/4d4\/486\/db64d44863c8ace80bbf9e1e5813b1ff.png\" width=\"1240\" height=\"734\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/db6\/4d4\/486\/db64d44863c8ace80bbf9e1e5813b1ff.png\"\/><\/figure>\n<p>\u0418\u0437 \u043d\u0435 \u043c\u0435\u043d\u0435\u0435 \u043f\u0440\u0438\u043a\u043e\u043b\u044c\u043d\u043e\u0433\u043e: \u043f\u0440\u0438 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u043c\u043e\u0436\u043d\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u043d\u0438\u043a \u0432\u0430\u0448\u0435\u0433\u043e \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u0436\u0430<\/p>\n<p>\u0412 179 \u043f\u043e\u0442\u043e\u043a\u0430\u0445 \u043d\u0430 CPU:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/435\/74a\/fed\/43574afed5b2494bb706ba5f80287948.png\" width=\"1693\" height=\"1340\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/435\/74a\/fed\/43574afed5b2494bb706ba5f80287948.png\"\/><\/figure>\n<p>\u041f\u0440\u0438\u0447\u0435\u043c \u043d\u0430\u043a\u043e\u043d\u0435\u0446-\u0442\u043e \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u0438\u043d\u0433<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/f72\/825\/10d\/f7282510d123d9c0054e994c81b7a049.png\" width=\"3353\" height=\"1260\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/f72\/825\/10d\/f7282510d123d9c0054e994c81b7a049.png\"\/><\/figure>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/53f\/d40\/16c\/53fd4016c3e9a20168a98bd543cac198.png\" alt=\"\u0422\u043e\u043b\u044c\u043a\u043e\u0442 \u0432\u043e\u0442 \u043f\u043e\u043b\u044c\u0437\u044b \u043d\u0438\u043a\u0430\u043a\u043e\u0439, \u043f\u043e\u0442\u0440\u0430\u0447\u0435\u043d\u043e 10 \u0447\u0430\u0441\u043e\u0432 \u0432 \u043f\u043e\u043f\u044b\u0442\u043a\u0430\u0445 \u0437\u0430\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0445\u043e\u0442\u044c \u0447\u0442\u043e-\u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c (\u043d\u0430\u0434\u0435\u044e\u0441\u044c \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0442\u043e\u0440\u044b \u043f\u043e\u0434\u0441\u043a\u0430\u0436\u0443\u0442 \u0433\u0434\u0435 \u0436\u0435 \u0442\u0443\u0442 \u043e\u0448\u0438\u0431\u043a\u0430)\" title=\"\u0422\u043e\u043b\u044c\u043a\u043e\u0442 \u0432\u043e\u0442 \u043f\u043e\u043b\u044c\u0437\u044b \u043d\u0438\u043a\u0430\u043a\u043e\u0439, \u043f\u043e\u0442\u0440\u0430\u0447\u0435\u043d\u043e 10 \u0447\u0430\u0441\u043e\u0432 \u0432 \u043f\u043e\u043f\u044b\u0442\u043a\u0430\u0445 \u0437\u0430\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0445\u043e\u0442\u044c \u0447\u0442\u043e-\u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c (\u043d\u0430\u0434\u0435\u044e\u0441\u044c \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0442\u043e\u0440\u044b \u043f\u043e\u0434\u0441\u043a\u0430\u0436\u0443\u0442 \u0433\u0434\u0435 \u0436\u0435 \u0442\u0443\u0442 \u043e\u0448\u0438\u0431\u043a\u0430)\" width=\"3358\" height=\"1258\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/53f\/d40\/16c\/53fd4016c3e9a20168a98bd543cac198.png\"\/><\/p>\n<div><figcaption>\u0422\u043e\u043b\u044c\u043a\u043e\u0442 \u0432\u043e\u0442 \u043f\u043e\u043b\u044c\u0437\u044b \u043d\u0438\u043a\u0430\u043a\u043e\u0439, \u043f\u043e\u0442\u0440\u0430\u0447\u0435\u043d\u043e 10 \u0447\u0430\u0441\u043e\u0432 \u0432 \u043f\u043e\u043f\u044b\u0442\u043a\u0430\u0445 \u0437\u0430\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0445\u043e\u0442\u044c \u0447\u0442\u043e-\u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c (\u043d\u0430\u0434\u0435\u044e\u0441\u044c \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0442\u043e\u0440\u044b \u043f\u043e\u0434\u0441\u043a\u0430\u0436\u0443\u0442 \u0433\u0434\u0435 \u0436\u0435 \u0442\u0443\u0442 \u043e\u0448\u0438\u0431\u043a\u0430)<\/figcaption><\/div>\n<\/figure>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/98e\/9a0\/ba4\/98e9a0ba4430b37f0fed45d6d63a1737.png\" alt=\"\u041f\u043e\u0439\u0434\u0443 \u0434\u0430\u043b\u044c\u0448\u0435 \u0440\u0443\u043a\u0430\u043c\u0438 \u0434\u043e\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u044e\" title=\"\u041f\u043e\u0439\u0434\u0443 \u0434\u0430\u043b\u044c\u0448\u0435 \u0440\u0443\u043a\u0430\u043c\u0438 \u0434\u043e\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u044e\" width=\"1173\" height=\"379\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/98e\/9a0\/ba4\/98e9a0ba4430b37f0fed45d6d63a1737.png\"\/><\/p>\n<div><figcaption>\u041f\u043e\u0439\u0434\u0443 \u0434\u0430\u043b\u044c\u0448\u0435 \u0440\u0443\u043a\u0430\u043c\u0438 \u0434\u043e\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u044e<\/figcaption><\/div>\n<\/figure>\n<h2>\u0413\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u043c \u043d\u0430 M1 Max \u0432 Mac Studio<\/h2>\n<p>+7 \u0447\u0430\u0441\u043e\u0432 \u0437\u0430 \u043d\u043e\u0447\u044c \u043d\u0430 macStudio, \u0432 1 \u043f\u043e\u0442\u043e\u043a \u043d\u0430\u0433\u0435\u043d\u0435\u0440\u0438\u043b\u043e\u0441\u044c 200 \u0444\u0430\u0439\u043b\u043e\u0432, \u043f\u0440\u0438\u0447\u0451\u043c \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0441\u0442\u0443\u0434\u0438\u044f \u0443\u0445\u043e\u0434\u0438\u043b\u0430 \u043f\u0435\u0440\u0438\u043e\u0434\u0438\u0447\u0435\u0441\u043a\u0438 \u0432 \u0441\u043e\u043d \u0438 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0444\u0430\u0439\u043b\u044b \u0433\u0440\u0443\u0437\u0438\u043b\u0438\u0441\u044c \u043f\u043e\u0440\u044f\u0434\u043a\u0430 8 \u043c\u0438\u043d\u0443\u0442<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/988\/b85\/739\/988b8573941e3fb568f0a56c4726a454.png\" width=\"3403\" height=\"1165\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/988\/b85\/739\/988b8573941e3fb568f0a56c4726a454.png\"\/><\/figure>\n<p>\u041f\u043e\u0439\u0434\u0443 \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u044e \u0432 2 \u043f\u043e\u0442\u043e\u043a\u0430 \u0438 \u0441 \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e\u0439 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u043e\u0439 \u0432 \u043f\u0430\u043c\u044f\u0442\u044c\u044e<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/fce\/f9e\/e77\/fcef9ee7770293b58eb4e99c338c5734.png\" alt=\"\u0418 \u0442\u0430\u043a \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0432\u0435\u0434\u0435\u0442 \u0441\u0435\u0431\u044f \u043b\u0443\u0447\u0448\u0435, \u043d\u0435\u0436\u0435\u043b\u0438 \u0447\u0435\u043c \u0432\u0441\u0435\u0433\u0434\u0430 \u043f\u043e\u0434 100%\" title=\"\u0418 \u0442\u0430\u043a \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0432\u0435\u0434\u0435\u0442 \u0441\u0435\u0431\u044f \u043b\u0443\u0447\u0448\u0435, \u043d\u0435\u0436\u0435\u043b\u0438 \u0447\u0435\u043c \u0432\u0441\u0435\u0433\u0434\u0430 \u043f\u043e\u0434 100%\" width=\"1206\" height=\"488\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/fce\/f9e\/e77\/fcef9ee7770293b58eb4e99c338c5734.png\"\/><\/p>\n<div><figcaption>\u0418 \u0442\u0430\u043a \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0432\u0435\u0434\u0435\u0442 \u0441\u0435\u0431\u044f \u043b\u0443\u0447\u0448\u0435, \u043d\u0435\u0436\u0435\u043b\u0438 \u0447\u0435\u043c \u0432\u0441\u0435\u0433\u0434\u0430 \u043f\u043e\u0434 100%<\/figcaption><\/div>\n<\/figure>\n<p>\u041f\u043e\u0440\u044f\u0434\u043a\u0430 40-50 \u0444\u0430\u0439\u043b\u043e\u0432 \u0432 \u0447\u0430\u0441 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c\u044e \u0430\u0443\u0434\u0438\u043e\u0434\u043e\u0440\u043e\u0436\u043a\u0438 10-30 \u0441\u0435\u043a, \u043d\u0430 \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u043d\u0430\u0433\u0435\u0440\u0435\u043d\u043e 5061 \u0438\u0437 9563 \u0444\u0430\u0439\u043b\u043e\u0432.<\/p>\n<p>\u041f\u043e\u043a\u0430 \u043e\u0442\u043a\u0440\u044b\u043b PR \u043f\u043e\u043d\u044f\u043b, \u0447\u0442\u043e GitHub \u043d\u0435 \u0442\u044f\u043d\u0435\u0442 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 count \u0434\u043b\u044f \u0442\u0430\u043a\u043e\u0433\u043e \u043e\u0431\u044a\u0435\u043c\u0430 \u0444\u0430\u0439\u043b\u043e\u0432, \u043d\u043e \u044f \u0441\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u044e mp3 \u0444\u0430\u0439\u043b\u044b \u0432 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438, \u0447\u0442\u043e\u0431\u044b \u0441 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0434\u0435\u0432\u0430\u0439\u0441\u043e\u0432 \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u043d\u0435 \u0437\u0430\u043c\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u0441 \u0440\u0430\u0441\u043f\u0430\u043a\u043e\u0432\u043a\u043e\u0439<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/e67\/819\/ef1\/e67819ef18078122b81492a0b0d1320a.png\" alt=\"\u041a\u043e\u0433\u0434\u0430 \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u043c\u043d\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u043e\u0432\" title=\"\u041a\u043e\u0433\u0434\u0430 \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u043c\u043d\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u043e\u0432\" width=\"1673\" height=\"1104\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/e67\/819\/ef1\/e67819ef18078122b81492a0b0d1320a.png\"\/><\/p>\n<div><figcaption>\u041a\u043e\u0433\u0434\u0430 \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u043c\u043d\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u043e\u0432<\/figcaption><\/div>\n<\/figure>\n<p>\u041f\u0440\u043e \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u0438\u0437\u043c\u0430 \u043f\u0438\u0441\u0430\u043b\u0438 \u0442\u0443\u0442 &#8212; <a href=\"https:\/\/github.com\/coqui-ai\/TTS\/discussions\/1852\" rel=\"noopener noreferrer nofollow\">https:\/\/github.com\/coqui-ai\/TTS\/discussions\/1852<\/a>, \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043d\u0443\u0436\u043d\u043e \u0438\u043c\u0435\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u0435 1 \u0441\u0438\u043d\u0442\u0435\u0437\u0430\u0442\u043e\u0440\u0430, \u0442\u0430\u043a \u043a\u0430\u043a 1 \u0441\u0438\u043d\u0442\u0435\u0437\u0430\u0442\u043e\u0440 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e 1 \u0444\u0430\u0439\u043b<\/p>\n<p>\u041f\u0440\u043e\u0448\u043b\u043e \u0435\u0449\u0435 10 \u0447\u0430\u0441\u043e\u0432,<br \/> 139 \u0444\u0430\u0439\u043b\u043e\u0432, \u043a\u0432\u0435\u0441\u0442 \u043d\u043e\u043c\u0435\u0440 4129<br \/> \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u043e 5685\/19784<br \/> 6508 \u0444\u0430\u0439\u043b\u043e\u0432 \u0438\u0437 9563 \u0444\u0430\u0439\u043b\u043e\u0432<br \/> 29%<\/p>\n<p>\u041a\u043e\u043d\u0435\u0447\u043d\u043e \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u0434\u0430\u0442\u044c \u0432\u043e\u043f\u0440\u043e\u0441:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/d46\/64d\/bf8\/d4664dbf82fb00b0e6ecc8cb3678f958.png\" width=\"2127\" height=\"376\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/d46\/64d\/bf8\/d4664dbf82fb00b0e6ecc8cb3678f958.png\"\/><\/figure>\n<p>\u0418 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043e\u0442\u0432\u0435\u0442 &#8212; \u044f, \u043f\u043e\u044d\u043a\u0441\u043f\u0435\u0440\u0435\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043b \u0441 \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u0438\u0437\u043c\u043e\u043c \u0438 \u043c\u043d\u043e\u0433\u043e\u043f\u043e\u0442\u043e\u0447\u043d\u043e\u0441\u0442\u044c\u044e &#8212; \u043a\u0430\u043a \u043c\u043d\u0435 \u043a\u0430\u0436\u0435\u0442\u0441\u044f \u043c\u043e\u0438\u0445 \u0437\u043d\u0430\u043d\u0438\u0439 \u043f\u0438\u0442\u043e\u043d\u0430 \u043d\u0435 \u0445\u0432\u0430\u0442\u0438\u043b\u043e, \u044f \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u043b \u0434\u0435\u043b\u0438\u0442\u044c \u043d\u0430 \u0447\u0430\u043d\u043a\u0438, \u043f\u0440\u043e\u0431\u043e\u0432\u0430\u043b \u0438\u0437 dataframe \u0432\u044b\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c \u0434\u043e \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439, \u043d\u043e \u0432\u0441\u0451 \u0440\u0430\u0432\u043d\u043e &#8212; \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044f \u043d\u0435 \u0443\u0441\u043a\u043e\u0440\u044f\u0435\u0442\u0441\u044f, \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u044c \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u043d\u0430\u0439\u0434\u0451\u0442 \u0441\u043f\u043e\u0441\u043e\u0431 \u0443\u0441\u043a\u043e\u0440\u0435\u043d\u0438\u044f, \u0432 \u043c\u043e\u0451\u043c \u0441\u043b\u0443\u0447\u0430\u0435 &#8212; \u044f \u043d\u0435 \u0441\u0438\u0434\u0435\u043b \u0437\u0430 \u043a\u043e\u043c\u043f\u043e\u043c \u0441\u0442\u043e\u043b\u044c\u043a\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0438 \u043d\u0438\u043a\u0443\u0434\u0430 \u043d\u0435 \u0442\u043e\u0440\u043e\u043f\u0438\u043b\u0441\u044f, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432\u043a\u043b\u044e\u0447\u0438\u043b \u0438 \u0440\u0430\u0437 \u0432 5 \u0447\u0430\u0441\u043e\u0432 \u043f\u043e\u0434\u043e\u0448\u0435\u043b \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043b<\/p>\n<p>\u041f\u0440\u0438\u0447\u0435\u043c \u0447\u0442\u043e \u0437\u0430\u0431\u0430\u0432\u043d\u043e, \u0435\u0441\u043b\u0438 \u0432 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u0438 \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f Adventurer, \u0442\u043e \u0435\u0441\u0442\u044c \u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u043e\u0435 \u0441\u043b\u043e\u0432\u043e, \u0442\u043e \u043e\u043d\u043e \u0437\u0430\u0442\u043e\u0440\u043c\u0430\u0436\u0438\u0432\u0430\u0435\u0442 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044e \u0434\u043b\u0438\u043d\u043d\u044b\u0445 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u043d\u0430 \u0441\u0435\u043a\u0443\u043d\u0434 10-20<\/p>\n<h2>\u041f\u0440\u043e\u0431\u043b\u0435\u043c\u044b Synthesizer<\/h2>\n<p>\u0427\u0442\u043e \u044f \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u043b \u0438\u0437 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438, \u043d\u043e \u0432\u0441\u0451 \u0440\u0430\u0432\u043d\u043e \u0431\u0435\u0441\u0442\u043e\u043b\u043a\u0443:<\/p>\n<p>\u0418\u0434\u0435\u044e \u043d\u0430\u0448\u0435\u043b \u0432 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0430\u0445 &#8212; \u043f\u043e\u0434\u043d\u044f\u0442\u044c Synthesizer \u0432\u044b\u0448\u0435, \u0441\u0434\u0435\u043b\u0430\u043b workaround \u0432\u043e\u043a\u0440\u0443\u0433 thread safe singleton, \u043d\u043e \u0432\u0441\u0451 \u0440\u0430\u0432\u043d\u043e &#8212; \u0442\u0430\u043c \u0433\u0434\u0435-\u0442\u043e \u043e\u0448\u0438\u0431\u043a\u0430 \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u0442\u043e\u0440\u0447\u0430, \u0435\u043c\u0443 \u043d\u0435 \u043d\u0440\u0430\u0432\u0438\u0442\u0441\u044f \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0432 \u0432\u0435\u0441\u0430\u0445 \u0438 \u043e\u043d \u0438\u0433\u043d\u043e\u0440\u0438\u0440\u0443\u0435\u0442 \u0432 \u0442\u0430\u043a\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0444\u0430\u0439\u043b\u044b, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0441\u0434\u0435\u043b\u0430\u043b failback \u043b\u0438\u0441\u0442, \u0442\u0430\u043a \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440<\/p>\n<pre><code class=\"python\">import os from TTS.utils.manage import ModelManager from TTS.utils.synthesizer import Synthesizer from tqdm import tqdm  import threading  lock = threading.Lock()  class Singleton(type):     _instances = {}      def __call__(cls, *args, **kwargs):         if cls not in cls._instances:             with lock:                 if cls not in cls._instances:                     cls._instances[cls] = super(Singleton, cls).__call__(*args, **kwargs)         return cls._instances[cls]  class Converter(metaclass=Singleton):     def __init__(self):         models_path = os.getenv('TTS_MODELS_JSON_PATH')         assets_path = os.getenv('ASSETS_PATH')                  print(f'tts models path is located at {models_path}')         print(f'tts assets path is located at {assets_path}')          model_manager = ModelManager(models_path, output_prefix=assets_path)          model_path, _, model_item = model_manager.download_model(\"tts_models\/multilingual\/multi-dataset\/xtts_v2\")          print(f'model is {model_item}')          self.syn = Synthesizer(             tts_checkpoint=model_path,             tts_config_path=os.path.join(model_path, \"config.json\"),         )                  self.tqdm_bar_format = '{l_bar}{bar}| {n_fmt}\/{total_fmt} [{elapsed}&lt;{remaining}, {rate_fmt}] {postfix}'         self.tqdm = None         self.failed_inputs = []                      def convert(self, text, input_sound_path, output_sound_path, language):         print(f\"text: {text}\")         print(f\"input: {input_sound_path}\")         print(f\"output: {output_sound_path}\")          try:             outputs = self.syn.tts(                 text=text,                 speaker_name=None,                 language_name=language,                 speaker_wav=input_sound_path,                  reference_wav=None,                 style_wav=None,                 style_text=None,                 reference_speaker_name=None,                 split_sentences=True,             )                          return self.syn.save_wav(outputs, output_sound_path)          except:             self.failed_inputs.append(input_sound_path)                      return None          def process_dataframe(self, df, num_processes, executor, row_proccesing_fn):         total_rows = len(df)         chunk_size = int(df.shape[0]\/num_processes)          print(f'total rows: {total_rows}')         print(f'chunk size: {chunk_size}')                  if (self.tqdm is None):             self.tqdm = tqdm(total=total_rows, unit='rows', ncols=100, desc='Generating Audio', ascii=False, bar_format=self.tqdm_bar_format, dynamic_ncols=True)                      chunks = [df.iloc[df.index[i:i + chunk_size]] for i in range(0, df.shape[0], chunk_size)]          for chunk in chunks:                 for custom_message in zip(executor.map(row_proccesing_fn, chunk.itertuples())):                     self.tqdm.set_postfix_str(custom_message)                     self.tqdm.update(1)          print(self.failed_inputs) <\/code><\/pre>\n<p>\u0410 \u043b\u043e\u0433\u0438\u043a\u0430 \u0442\u0440\u0435\u0434\u0438\u043d\u0433\u0430<\/p>\n<pre><code class=\"python\">    def process_rows_in_parallel(self, df, row_proccesing_fn, max_workers=STATIC_MAX_WORKERS):         with ThreadPoolExecutor(max_workers=max_workers) as executor:             Converter().process_dataframe(                 df=df,                 num_processes=max_workers,                 executor=executor,                 row_proccesing_fn=row_proccesing_fn             )       def tts(self, text: str, inputName: str, outputName: str, output_subfolder: str, language: str, forceGen: bool = False):         result = \"\"         outpath = os.path.join(SOUND_OUTPUT_FOLDER, output_subfolder, outputName)         inpath = os.path.join(SOUND_INPUT_FOLDER, output_subfolder, inputName)          if os.path.isfile(outpath) and forceGen is not True:             result = \"duplicate generation, skipping\"             return          if os.path.isfile(inpath) is False:             inpath = DEFAULT_VOICE             return          Converter().convert(text=text, input_sound_path=inpath, language=language, output_sound_path=outpath)          result = f\"Audio file saved successfully!: {outpath}\"          return result<\/code><\/pre>\n<p>\u0422\u043e \u0435\u0441\u0442\u044c, \u0432\u0441\u0451 \u0440\u0430\u0432\u043d\u043e \u043d\u0435 \u0443\u0434\u0430\u0451\u0442\u0441\u044f \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0431\u043b\u0438\u0437\u043a\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0434\u043b\u044f<\/p>\n<blockquote>\n<p>Processing time: 75.22344183921814<br \/>Real-time factor: 2.09797635813799<\/p>\n<\/blockquote>\n<p>\u0413\u0434\u0435 \u0441\u0430\u043c\u0430 \u0441\u0435\u0442\u043a\u0430 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u0432\u044b\u0432\u043e\u0434 \u0437\u0430 2 \u0441\u0435\u043a\u0443\u043d\u0434\u044b, \u0430 \u0432\u043e\u0442 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0438\u043d\u0433 \u043c\u0438\u043d\u0438\u043c\u0443\u043c \u04455 \u0434\u043b\u044f \u043a\u043e\u0440\u043e\u0442\u043a\u0438\u0445 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0438 \u043c\u043d\u043e\u0433\u043e\u0432\u0430\u0442\u043e \u0434\u043b\u044f \u0434\u043b\u0438\u043d\u043d\u044b\u0445<\/p>\n<h2>\u0423\u043c\u043d\u044b\u0435 \u043c\u044b\u0441\u043b\u0438 \u043f\u0440\u0435\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043b\u0438 \u0435\u0433\u043e &#8212; \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c Tmux<\/h2>\n<p>\u041f\u043e\u044f\u0432\u0438\u043b\u0430\u0441\u044c \u0433\u0438\u043f\u043e\u0442\u0435\u0437\u0430:<\/p>\n<ul>\n<li>\n<p>\u0437\u0430\u043f\u0443\u0441\u043a\u0430\u044e \u0441 \u044d\u0442\u0438\u043c\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f\u043c\u0438 \u043d\u0430 \u043d\u043e\u0432\u043e\u0439 \u0442\u0430\u0447\u043a\u0435<\/p>\n<\/li>\n<li>\n<p>\u0437\u0430\u043f\u0443\u0441\u043a\u0430\u044e \u043f\u0440\u043e\u0441\u0442\u043e \u043c\u043d\u043e\u0433\u043e \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u043e\u0432 \u043d\u0430 \u043d\u043e\u0432\u043e\u0439 \u0442\u0430\u0447\u043a\u0435<\/p>\n<\/li>\n<\/ul>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/98c\/ad7\/b94\/98cad7b94826d71861228c92c0b0adb0.png\" alt=\"\u0443\u0436\u0435 \u043f\u043e 75 \u0440\u0443\u0431\u043b\u0435\u0439 \u0432 \u0447\u0430\u0441\" title=\"\u0443\u0436\u0435 \u043f\u043e 75 \u0440\u0443\u0431\u043b\u0435\u0439 \u0432 \u0447\u0430\u0441\" width=\"3401\" height=\"1386\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/98c\/ad7\/b94\/98cad7b94826d71861228c92c0b0adb0.png\"\/><\/p>\n<div><figcaption>\u0443\u0436\u0435 \u043f\u043e 75 \u0440\u0443\u0431\u043b\u0435\u0439 \u0432 \u0447\u0430\u0441<\/figcaption><\/div>\n<\/figure>\n<p>\u0421\u0430\u043c\u044b\u0439 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u043e\u043a\u0430\u0437\u0430\u043b\u0441\u044f \u0442\u0430\u043a\u0436\u0435 \u0431\u0435\u0441\u043f\u043e\u043b\u0435\u0437\u043d\u044b\u043c:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/aba\/5dd\/4ad\/aba5dd4adb800afb03f393e4e6beac97.png\" alt=\"\u0412\u0441\u0451 \u043d\u0430 cuda \u0432 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0432\u043e\u0440\u043a\u0435\u0440\u0430\u0445\" title=\"\u0412\u0441\u0451 \u043d\u0430 cuda \u0432 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0432\u043e\u0440\u043a\u0435\u0440\u0430\u0445\" width=\"3440\" height=\"1440\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/aba\/5dd\/4ad\/aba5dd4adb800afb03f393e4e6beac97.png\"\/><\/p>\n<div><figcaption>\u0412\u0441\u0451 \u043d\u0430 cuda \u0432 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0432\u043e\u0440\u043a\u0435\u0440\u0430\u0445<\/figcaption><\/div>\n<\/figure>\n<p>\u0412\u0441\u0451 \u0432 \u043f\u0435\u0440\u0435\u043c\u0435\u0448\u043a\u0443 \u0432 1 \u0432\u043e\u0440\u043a\u0435\u0440:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/b8c\/e96\/730\/b8ce96730e1a345dd20ab987a591defa.png\" width=\"3433\" height=\"1397\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/b8c\/e96\/730\/b8ce96730e1a345dd20ab987a591defa.png\"\/><\/figure>\n<p>\u0412 \u043f\u0435\u0440\u0435\u043c\u0435\u0448\u043a\u0443 \u043f\u0440\u043e\u0441\u0442\u043e \u0432\u044b\u0432\u043e\u0434:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/dc7\/fb8\/821\/dc7fb8821a371753c5a0e0e4667a1b8d.png\" width=\"3416\" height=\"1396\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/dc7\/fb8\/821\/dc7fb8821a371753c5a0e0e4667a1b8d.png\"\/><\/figure>\n<ul>\n<li>\n<p>UPD: \u0432 \u043f\u0435\u0440\u0435\u043c\u0435\u0448\u043a\u0443 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0432\u044b\u0440\u043e\u0441\u043b\u0430, \u043d\u043e \u043d\u0435 \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e, \u0432\u043c\u0435\u0441\u0442\u043e 1 \u0444\u0430\u0439\u043b\u0430 \u0432 \u043c\u0438\u043d\u0443\u0442\u0443 \u0432\u044b\u0445\u043e\u0434\u0438\u0442 4-5<\/p>\n<\/li>\n<li>\n<p>UPD: RPS \u0443\u0436\u0435 8 \u0444\u0430\u0439\u043b\u043e\u0432 \u0432 \u043c\u0438\u043d\u0443\u0442\u0443, \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0433\u043e\u043d\u044f\u0442\u044c \u043d\u0430 CPU \u0432 1 \u0432\u043e\u0440\u043a\u0435\u0440 \u043a\u0443\u0434\u0430 \u0431\u044b\u0441\u0442\u0440\u0435\u0435 \u043e\u043a\u0430\u0437\u0430\u043b\u0441\u044f \u0432 \u043c\u043e\u0451\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0438 \u043f\u043e\u0442\u0440\u0430\u0447\u0435\u043d\u043d\u043e\u043c \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043d\u0430 \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0438.<\/p>\n<\/li>\n<\/ul>\n<p>\u041f\u0440\u043e\u0441\u043d\u0443\u043b\u0441\u044f \u0438 \u043f\u043e\u0448\u0435\u043b \u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c, \u043f\u0438\u0448\u0435\u0442 \u0447\u0442\u043e \u0433\u043e\u0442\u043e\u0432\u043e<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/48d\/4b4\/bc6\/48d4b4bc6fb93b1ba314a359a32b42cc.png\" width=\"3421\" height=\"1375\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/48d\/4b4\/bc6\/48d4b4bc6fb93b1ba314a359a32b42cc.png\"\/><\/figure>\n<p>\u041f\u043e\u0432\u0442\u043e\u0440\u043d\u044b\u0439 \u043f\u0440\u043e\u0433\u043e\u043d \u0441\u043e\u043e\u0431\u0449\u0430\u0435\u0442 \u043e \u0442\u043e\u043c \u0436\u0435<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/824\/f76\/275\/824f76275d03a5e426fbb670a3b2246e.png\" width=\"3438\" height=\"1401\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/824\/f76\/275\/824f76275d03a5e426fbb670a3b2246e.png\"\/><\/figure>\n<h2>\u0418\u0434\u0435\u043c \u0441\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0442\u044c \u0432 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 &#8212; \u0430 \u0442\u0430\u043c \u043a\u0443\u0447\u0430 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u0441 \u0440\u0430\u0437\u043c\u0435\u0440\u0430\u043c\u0438<\/h2>\n<p>\u0417\u0430\u043e\u0434\u043d\u043e \u043d\u0430\u0434\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0441\u0430\u0431\u0431\u0440\u0430\u043d\u0447 \u043e\u0442 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439, \u0447\u0442\u043e\u0431\u044b \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0430\u0443\u0434\u0438\u043e\u0444\u0430\u0439\u043b\u044b \u0432 \u0441\u0430\u0431\u0432\u0435\u0442\u043a\u0435, \u0430 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u043e\u0442\u043a\u0440\u044b\u0442\u044c PR, \u0430 \u0432\u0441\u0435 \u043a\u043e\u043c\u043c\u0438\u0442\u044b \u0437\u0430\u0441\u043a\u0432\u043e\u0448\u0438\u0442\u044c \u0432 \u043e\u0434\u0438\u043d, \u043e\u0431\u044b\u0447\u043d\u044b\u0439 \u043f\u0430\u043a \u0432\u044b\u0448\u0435\u043b \u0432 5GB \u0443 \u0432\u0441\u0435\u0433\u043e \u0430\u0440\u0445\u0438\u0432\u0430, \u043d\u0430\u0434\u043e \u043a\u0430\u043a-\u0442\u043e \u043f\u0435\u0440\u0435\u0434\u0435\u043b\u0430\u0442\u044c \u0432 mp3 \u0441\u0436\u0430\u0442\u044b\u0439, \u0431\u044b\u043b\u0430 \u043a\u043e\u043d\u0435\u0447\u043d\u043e \u0438\u0434\u0435\u044f \u0434\u0435\u043b\u0430\u0442\u044c \u0443\u0441\u043a\u043e\u0440\u0435\u043d\u043d\u044b\u0435 \u0437\u0430\u043f\u0438\u0441\u0438 \u0447\u0435\u0440\u0435\u0437 tts, \u0430 \u0432 \u043f\u043b\u0435\u0435\u0440\u0435 \u0437\u0430\u043c\u0435\u0434\u043b\u044f\u0442\u044c, \u043d\u0443 \u0434\u0430 \u043b\u0430\u0434\u043d\u043e<\/p>\n<pre><code class=\"bash\">git checkout russian-translation-through-local-tts   # \u0434\u0435\u043b\u0430\u0435\u043c \u0431\u0435\u043a\u0430\u043f \u0432\u0435\u0442\u043a\u0443 git checkout -b russian-translation-through-local-tts-backup git push origin russian-translation-through-local-tts-backup  git checkout russian-translation-through-local-tts   # \u043c\u0435\u043d\u044f\u0435\u043c \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 \u0441 mp3 \u043d\u0430 wav for f in *.mp3; do mv -- \"$f\" \"${f%.mp3}.wav\"; done  # \u0443\u0434\u0430\u043b\u044f\u0435\u043c wav-\u043a\u0438 rm -rf *.wav   # \u043e\u0441\u043d\u043e\u0432\u0430 \u043d\u0430\u0432\u0435\u0440\u043d\u043e\u0435 \u0432\u0441\u0435\u0433\u043e \u0447\u0442\u043e \u0441\u0432\u044f\u0437\u0430\u043d\u043e \u0441 \u043c\u0435\u0434\u0438\u0430, \u0438\u043c\u0445\u043e \u043b\u0435\u0436\u0438\u0442 \u0432 \u043b\u044e\u0431\u043e\u043c \u043f\u0440\u043e\u043f\u0440\u0438\u0435\u0442\u0430\u0440\u043d\u043e\u043c \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u0432\u0438\u0434\u0435\u043e, \u0430\u0443\u0434\u0438\u043e \u0438 \u0442\u0430\u043a \u0434\u0430\u043b\u0435\u0435 sudo apt install ffmpeg   # \u0441\u0436\u0438\u043c\u0430\u0435\u043c \u0434\u043e \u0443\u043f\u043e\u0440\u0430 ru-\u0437\u0432\u0443\u043a\u0438 for f in *.wav; do ffmpeg -i \"$f\" -vn -ar 44100 -ac 2 -b:a 192k \"${f%.*}.mp3\"; done  # \u0434\u0435\u043b\u0430\u0435\u043c \u0430\u0440\u0445\u0438\u0432\u0447\u0438\u043a zip -r AI_VoiceOverData_Vanilla-RU.zip wow-classic-ru\/  # \u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0432\u0435\u0441\u0438\u0442 ls -sh AI_VoiceOverData_Vanilla-RU.zip  # \u043f\u043e\u043d\u0438\u043c\u0430\u0435\u043c \u0447\u0442\u043e 2.9GB \u0433\u0438\u0442\u0445\u0430\u0431 \u043d\u0435 \u043f\u0440\u043e\u043f\u0443\u0441\u0442\u0438\u0442, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0434\u0435\u043b\u0430\u0435\u043c lfs curl -s https:\/\/packagecloud.io\/install\/repositories\/github\/git-lfs\/script.deb.sh | sudo bash sudo apt-get install git-lfs  # \u0438 \u0432 \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u043c\u043e\u043c\u0435\u043d\u0442 \u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c, \u0447\u0442\u043e \u043d\u0435\u043b\u044c\u0437\u044f \u0432 \u0444\u043e\u0440\u043a\u0430\u0445 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f LFS. # c\u043d\u0430\u0447\u0430\u043b\u0430 \u0445\u043e\u0442\u0435\u043b \u0431\u044b\u043b\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c detach # \u043d\u043e \u043f\u043e\u0442\u043e\u043c \u043f\u043e\u043d\u044f\u043b, \u0447\u0442\u043e \u043b\u0443\u0447\u0448\u0435 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043d\u043e\u0432\u0443\u044e \u0440\u0435\u043f\u0443 \u043f\u043e\u0434 assets \u0438 \u0442\u0443\u0434\u0430 \u0432\u0441\u0451 \u0437\u0430\u043a\u0438\u043d\u0443\u0442\u044c git clone https:\/\/github.com\/the-homeless-god\/wow-voiceover-assets  cp -r translator\/assets ~\/projects\/wow-voiceover-assets cd ~\/projects\/wow-voiceover-assets  git lfs track AI_VoiceOverData_Vanilla-RU.zip git add AI_VoiceOverData_Vanilla-RU.zip .gitattributes  git commit -m \"feat(ru): add russian soundpack\" git tag v1.4.4  git push origin --tags  # \u0430 \u043f\u043e\u0442\u043e\u043c \u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0447\u0442\u043e \u0438 \u0442\u0430\u043c \u043b\u0438\u043c\u0438\u0442 \u043d\u0430 2gb, \u0437\u043d\u0430\u0447\u0438\u0442 \u0436\u043c\u0435\u043c \u0430\u0440\u0445\u0438\u0432 \u0434\u0430\u043b\u044c\u0448\u0435 # \u0441\u0436\u0438\u043c\u0430\u0435\u043c \u0441 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0439 \u043a\u043e\u043c\u043f\u0440\u0435\u0441\u0441\u0438\u0435\u0439 zip -9r ru.zip AI_VoiceOverData_Vanilla-RU.zip   # \u0432\u0441\u0451 \u0440\u0430\u0432\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0442\u043e\u0436\u0435 \u0441\u0430\u043c\u043e\u0435, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u0440\u0430\u0441\u043f\u0438\u043b\u0438\u043c \u0430\u0440\u0445\u0438\u0432 # \u0442\u0430\u043a\u0436\u0435 \u043a\u0430\u043a \u043a\u043e\u0433\u0434\u0430-\u0442\u043e \u043f\u0438\u043b\u0438\u043b\u0438 \u0434\u0438\u0441\u043a\u0438 \u0438 \u043f\u0440\u043e\u0447\u0435\u0435 split -b 1024m AI_VoiceOverData_Vanilla-RU.zip --additional-suffix=`basename \"AI_VoiceOverData_Vanilla-RU.zip\"`  # \u0434\u043b\u044f \u0441\u043a\u043b\u0435\u0439\u043a\u0438 \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u043e\u0441\u0442\u0430\u0432\u0438\u043c \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0441\u043a\u0440\u0438\u043f\u0442 \u0432\u043d\u0443\u0442\u0440\u0438 cat xaaAI_VoiceOverData_Vanilla.zip \\ xabAI_VoiceOverData_Vanilla.zip \\     xacAI_VoiceOverData_Vanilla.zip > AI_VoiceOverData_Vanilla-RU.zip  # \u043f\u043e \u0438\u0434\u0435\u0435 \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043b\u043e\u0433\u0438\u043a\u0443 split-\u0430 \u0432\u043e\u043a\u0440\u0443\u0433 git hooks, \u0442\u043e \u0435\u0441\u0442\u044c \u0432\u044b \u043c\u043e\u043a\u0430\u0435\u0442\u0435 \u043f\u0430\u043f\u043a\u0443 # \u0438 \u043f\u0440\u0438 pull\/push \u0435\u0451 \u043a\u043b\u0435\u0438\u0442\u0435 \u0438 \u0440\u0430\u0437\u0431\u0438\u0432\u0430\u0435\u0442\u0435, \u0434\u0430 \u044d\u0442\u043e \u0434\u043e\u043b\u0433\u043e, \u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 # \u0432 \u0438\u0442\u043e\u0433\u0435 \u043f\u043b\u044e\u043d\u0443\u043b \u0438 \u043e\u0442\u043a\u0430\u0437\u0430\u043b\u0441\u044f \u043e\u0442 \u0430\u0440\u0445\u0438\u0432\u043e\u0432, \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0434\u043e\u043b\u0433\u043e \u0438 \u043c\u043d\u043e\u0433\u043e \u0437\u0430\u043c\u043e\u0440\u043e\u0447\u0435\u043a  # \u043d\u0443 \u0430 \u0432 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u043e\u0439 \u0440\u0435\u043f\u0435 \u0434\u0440\u043e\u043f\u0430\u0435\u043c \u0430\u0441\u0441\u0435\u0442\u044b, \u0447\u0442\u043e\u0431\u044b PR \u0431\u044b\u043b \u043a\u0440\u0430\u0441\u0438\u0432\u044b\u043c rm -rf translator\/assets\/wow-classic-ru rm -rf translator\/assets\/wow-classic-en git commit -m \"refactor: drop assets\" -n  # \u0414\u043b\u044f \u0441\u043a\u0432\u043e\u0448\u0430 \u044f \u0445\u0440\u0430\u043d\u044e \u044d\u0442\u0443 \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u0443 \u0441\u0435\u0431\u044f \u0432 zshrc \u0432 Dotfiles \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u0431\u043e\u043b\u044c\u0448\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432 \u0442\u0443\u0442 # https:\/\/github.com\/the-homeless-god\/dotfiles\/blob\/master\/configs\/.zshrc#L50 git reset $(git merge-base master $(git branch --show-current))<\/code><\/pre>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/b0a\/7c7\/22e\/b0a7c722e0fc14a41605bd83c6b11f7d.png\" alt=\"\u043c\u0435\u043d\u044f\u0435\u043c \u0444\u043e\u0440\u043c\u0430\u0442 ffmpeg-\u043e\u043c\" title=\"\u043c\u0435\u043d\u044f\u0435\u043c \u0444\u043e\u0440\u043c\u0430\u0442 ffmpeg-\u043e\u043c\" width=\"3412\" height=\"1335\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/b0a\/7c7\/22e\/b0a7c722e0fc14a41605bd83c6b11f7d.png\"\/><\/p>\n<div><figcaption>\u043c\u0435\u043d\u044f\u0435\u043c \u0444\u043e\u0440\u043c\u0430\u0442 ffmpeg-\u043e\u043c<\/figcaption><\/div>\n<\/figure>\n<h2>\u041f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u044f \u0430\u0434\u0434\u043e\u043d\u0430<\/h2>\n<p>\u0418\u0434\u0435\u043c \u0441\u043e\u0437\u0434\u0430\u0435\u043c \u0430\u0434\u0434\u043e\u043d \u043e\u043f\u044f\u0442\u044c, \u0443 \u043d\u0438\u0445 \u0442\u0430\u043c \u0447\u0442\u043e-\u0442\u043e \u0432\u0441\u0451 \u0441\u043b\u043e\u043c\u0430\u043b\u043e\u0441\u044c \u0438 \u043d\u0430\u0434\u043e \u0432 \u043d\u043e\u0432\u043e\u043c UI<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/2f2\/436\/f12\/2f2436f12b1272ff682694c8d72c9023.png\" alt=\"\u041a\u0430\u0440\u0442\u0438\u043d\u043a\u0430 \u0440\u0430\u0437\u0443\u043c\u0435\u0435\u0442\u0441\u044f \u0438\u0437-\u043f\u043e\u0434 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0433\u043e stable diffusion\" title=\"\u041a\u0430\u0440\u0442\u0438\u043d\u043a\u0430 \u0440\u0430\u0437\u0443\u043c\u0435\u0435\u0442\u0441\u044f \u0438\u0437-\u043f\u043e\u0434 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0433\u043e stable diffusion\" width=\"1715\" height=\"1328\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/2f2\/436\/f12\/2f2436f12b1272ff682694c8d72c9023.png\"\/><\/p>\n<div><figcaption>\u041a\u0430\u0440\u0442\u0438\u043d\u043a\u0430 \u0440\u0430\u0437\u0443\u043c\u0435\u0435\u0442\u0441\u044f \u0438\u0437-\u043f\u043e\u0434 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0433\u043e stable diffusion<\/figcaption><\/div>\n<\/figure>\n<p>\u0423 \u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u043e\u0433\u043e \u043f\u0430\u043a\u0430 600\u043a \u0441\u043a\u0430\u0447\u0438\u0432\u0430\u043d\u0438\u0439, \u0441\u0442\u0430\u0432\u044c \u043a\u043b\u0430\u0441\u0441 &#8212; \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043d\u0430\u0441<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/61c\/7b9\/9b5\/61c7b99b589471689093612974bfd609.png\" width=\"1297\" height=\"1057\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/61c\/7b9\/9b5\/61c7b99b589471689093612974bfd609.png\"\/><\/figure>\n<p>\u0411\u0443\u0434\u0443 \u0432\u0435\u0440\u0438\u0442\u044c \u0442\u0443\u0442 \u043d\u0435\u0442 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0439 \u043d\u0430 \u0440\u0430\u0437\u043c\u0435\u0440 \u0444\u0430\u0439\u043b\u0430<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/edb\/8c9\/d43\/edb8c9d43a03edc222db5dbbcccd1e7d.png\" alt=\"\u041d\u043e \u0435\u0441\u0442\u044c \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435 \u043d\u0430 \u0432\u0430\u0448 \u0430\u0439\u043f\u0438\u0448\u043d\u0438\u043a, \u0438\u0431\u043e Curse \u043f\u0440\u0438\u043d\u0430\u0434\u043b\u0435\u0436\u0438\u0442 Twitch, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u0440\u0438\u043d\u0430\u0434\u043b\u0435\u0436\u0438\u0442 Amazon\" title=\"\u041d\u043e \u0435\u0441\u0442\u044c \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435 \u043d\u0430 \u0432\u0430\u0448 \u0430\u0439\u043f\u0438\u0448\u043d\u0438\u043a, \u0438\u0431\u043e Curse \u043f\u0440\u0438\u043d\u0430\u0434\u043b\u0435\u0436\u0438\u0442 Twitch, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u0440\u0438\u043d\u0430\u0434\u043b\u0435\u0436\u0438\u0442 Amazon\" width=\"1398\" height=\"1220\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/edb\/8c9\/d43\/edb8c9d43a03edc222db5dbbcccd1e7d.png\"\/><\/p>\n<div><figcaption>\u041d\u043e \u0435\u0441\u0442\u044c \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435 \u043d\u0430 \u0432\u0430\u0448 \u0430\u0439\u043f\u0438\u0448\u043d\u0438\u043a, \u0438\u0431\u043e Curse \u043f\u0440\u0438\u043d\u0430\u0434\u043b\u0435\u0436\u0438\u0442 Twitch, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u0440\u0438\u043d\u0430\u0434\u043b\u0435\u0436\u0438\u0442 Amazon<\/figcaption><\/div>\n<\/figure>\n<p>\u0412\u044b\u043b\u043e\u0436\u0438\u043b, \u0441\u0435\u0439\u0447\u0430\u0441 \u043d\u0430 \u0440\u0435\u0432\u044c\u044e<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/277\/4c9\/89e\/2774c989e4472c5f4bfe6c5487ed74b7.png\" alt=\"\u041d\u0430 \u0440\u0435\u0434\u0434\u0438\u0442\u0430\u0445 \u043f\u0438\u0448\u0443\u0442, \u0447\u0442\u043e \u044d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0437\u0430\u043d\u044f\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0434\u043d\u0435\u0439, \u043b\u0430\u0434\u043d\u043e, \u043f\u043e\u0434\u0432\u0435\u0434\u0443 \u0438\u0442\u043e\u0433\u0438 \u0438 \u0432\u044b\u043f\u0443\u0449\u0443 \u0441\u0442\u0430\u0442\u044c\u044e, \u0430 \u0442\u0430\u043c \u0443\u0436\u0435 \u043a\u0430\u043a \u0431\u0443\u0434\u0435\u0442 \u0434\u0430\u043b\u044c\u0448\u0435\" title=\"\u041d\u0430 \u0440\u0435\u0434\u0434\u0438\u0442\u0430\u0445 \u043f\u0438\u0448\u0443\u0442, \u0447\u0442\u043e \u044d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0437\u0430\u043d\u044f\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0434\u043d\u0435\u0439, \u043b\u0430\u0434\u043d\u043e, \u043f\u043e\u0434\u0432\u0435\u0434\u0443 \u0438\u0442\u043e\u0433\u0438 \u0438 \u0432\u044b\u043f\u0443\u0449\u0443 \u0441\u0442\u0430\u0442\u044c\u044e, \u0430 \u0442\u0430\u043c \u0443\u0436\u0435 \u043a\u0430\u043a \u0431\u0443\u0434\u0435\u0442 \u0434\u0430\u043b\u044c\u0448\u0435\" width=\"1271\" height=\"940\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/277\/4c9\/89e\/2774c989e4472c5f4bfe6c5487ed74b7.png\"\/><\/p>\n<div><figcaption>\u041d\u0430 \u0440\u0435\u0434\u0434\u0438\u0442\u0430\u0445 \u043f\u0438\u0448\u0443\u0442, \u0447\u0442\u043e \u044d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0437\u0430\u043d\u044f\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0434\u043d\u0435\u0439, \u043b\u0430\u0434\u043d\u043e, \u043f\u043e\u0434\u0432\u0435\u0434\u0443 \u0438\u0442\u043e\u0433\u0438 \u0438 \u0432\u044b\u043f\u0443\u0449\u0443 \u0441\u0442\u0430\u0442\u044c\u044e, \u0430 \u0442\u0430\u043c \u0443\u0436\u0435 \u043a\u0430\u043a \u0431\u0443\u0434\u0435\u0442 \u0434\u0430\u043b\u044c\u0448\u0435<\/figcaption><\/div>\n<\/figure>\n<h2>\u0422\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435<\/h2>\n<p>\u041f\u043e\u0439\u0434\u0443 \u0445\u043e\u0442\u044c \u043f\u0440\u043e\u0432\u0435\u0440\u044e, \u0432\u044b\u0431\u0438\u0440\u0430\u044e \u0440\u0443\u0441\u0441\u043a\u0438\u0439 \u044f\u0437\u044b\u043a \u0438 \u0437\u0432\u0443\u043a<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/8ad\/ede\/69a\/8adede69af94b19fd4c0555c1d0dcde1.png\" width=\"719\" height=\"507\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/8ad\/ede\/69a\/8adede69af94b19fd4c0555c1d0dcde1.png\"\/><\/figure>\n<h2>\u041a\u0430\u043a \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0441\u0435\u0439\u0447\u0430\u0441?<\/h2>\n<p>\u0421\u0430\u043c\u0438\u043c \u0432\u043e\u0432 \u0437\u0430\u043d\u0438\u043c\u0430\u0442\u044c\u0441\u044f \u043c\u043d\u0435 \u043b\u0435\u043d\u044c, \u044f \u043f\u043e\u0431\u0430\u043b\u043e\u0432\u0430\u043b\u0441\u044f, \u0445\u0432\u0430\u0442\u0438\u0442, \u0445\u043e\u0442\u044f \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0432\u0441\u0435\u043c \u0432 \u043a\u0432\u0435\u0441\u0442\u0430\u0445 &#171;\u041d\u0438\u0445\u0430\u043e, \u0431\u0440\u0430\u0442\u044c\u044f&#187; \u0434\u0443\u043c\u0430\u044e \u0431\u044b\u043b\u043e \u0431\u044b \u0437\u0430\u0431\u0430\u0432\u043d\u043e, \u0442\u0443\u0442 \u0434\u0440\u0443\u0433\u0438\u0435 \u043c\u043e\u0434\u043e\u0434\u0435\u043b\u044b \u0434\u043e\u0434\u0435\u043b\u0430\u044e\u0442. \u041a\u0430\u043a \u043c\u043e\u0434\u0435\u0440\u0430\u0446\u0438\u044e \u043f\u043b\u0430\u0433\u0438\u043d \u043f\u0440\u043e\u0439\u0434\u0451\u0442 \u0434\u043e\u043f\u0438\u043b\u044e \u0442\u0430\u043c \u043c\u0435\u043b\u043e\u0447\u0438, \u0447\u0442\u043e\u0431\u044b \u0431\u0435\u0437 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438 \u0441\u0442\u0430\u0432\u0438\u043b\u0438, \u043d\u043e \u0434\u0430\u0436\u0435 \u0441\u0435\u0439\u0447\u0430\u0441 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u044b\u0439 VoiceOver \u0430\u0434\u0434\u043e\u043d, \u0430 \u043a \u043d\u0435\u043c\u0443 \u043f\u043e\u043b\u043e\u0436\u0438\u0442\u044c soundpack<\/p>\n<p>\u041a\u0430\u043a \u044d\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043f\u043e\u043a\u0430 \u0430\u0434\u0434\u043e\u043d \u043d\u0430 \u0440\u0435\u0432\u044c\u044e:<\/p>\n<ol>\n<li>\n<p>\u0421\u0442\u0430\u0432\u0438\u043c \u044d\u0442\u043e\u0442 \u0430\u0434\u0434\u043e\u043d <a href=\"https:\/\/www.curseforge.com\/wow\/addons\/voiceover\" rel=\"noopener noreferrer nofollow\">https:\/\/www.curseforge.com\/wow\/addons\/voiceover<\/a><\/p>\n<\/li>\n<li>\n<p>\u0417\u0430\u0442\u0435\u043c \u0438\u0434\u0435\u043c \u0432 \u043f\u0430\u043f\u043a\u0443 \u0433\u0434\u0435 \u0443 \u0432\u0430\u0441 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d \u0432\u043e\u0432 \u0438 \u0438\u0449\u0435\u043c \u0442\u0430\u043c <code>__classic-era__\/interface\/AddOns\/AI_VoiceOverData_Vanilla<\/code><\/p>\n<\/li>\n<li>\n<p>\u0418 \u0437\u0430\u043a\u0438\u0434\u044b\u0432\u0430\u0435\u043c \u0442\u0443\u0434\u0430 \u0432\u0441\u0451 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0438\u0437 <a href=\"https:\/\/github.com\/the-homeless-god\/wow-voiceover\/tree\/master\/translator\/assets\/wow-classic-ru\/AI_VoiceOverData_Vanilla\" rel=\"noopener noreferrer nofollow\">https:\/\/github.com\/the-homeless-god\/wow-voiceover\/tree\/master\/translator\/assets\/wow-classic-ru\/AI_VoiceOverData_Vanilla<\/a><\/p>\n<\/li>\n<\/ol>\n<h2>\u0418\u0442\u043e\u0433\u043e<\/h2>\n<h3>\u0427\u0442\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c?<\/h3>\n<ul>\n<li>\n<p>\u0410\u0434\u0434\u043e\u043d \u043d\u0430 CurseForge: <a href=\"https:\/\/legacy.curseforge.com\/wow\/addons\/voiceover-sounds-vanilla-russian\" rel=\"noopener noreferrer nofollow\">https:\/\/legacy.curseforge.com\/wow\/addons\/voiceover-sounds-vanilla-russian<\/a><\/p>\n<\/li>\n<li>\n<p>\u041c\u043e\u0439 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439: <a href=\"https:\/\/github.com\/the-homeless-god\/wow-voiceover\" rel=\"noopener noreferrer nofollow\">https:\/\/github.com\/the-homeless-god\/wow-voiceover<\/a><\/p>\n<p><strong>\u0412 \u0446\u0435\u043b\u043e\u043c, \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u043c \u044f \u043d\u0435\u0443\u0434\u043e\u0432\u043b\u0435\u0442\u0432\u043e\u0440\u0435\u043d:<br \/><\/strong><\/p>\n<ul>\n<li>\n<p>\u0411\u0435\u0441\u0438\u0442 \u043f\u0438\u0442\u043e\u043d\u043e\u0432\u0441\u043a\u0430\u044f \u0442\u0440\u0430\u0431\u043b\u0430 \u0441 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0435\u0439, \u0438\u0449\u0443 \u043f\u043e\u043c\u043e\u0449\u0438 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0442\u043e\u0440\u043e\u0432 \u0447\u0442\u043e \u0442\u0430\u043c \u043c\u043e\u0436\u043d\u043e \u0443\u043b\u0443\u0447\u0448\u0438\u0442\u044c<\/p>\n<\/li>\n<li>\n<p>\u041d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043a\u0432\u0435\u0441\u0442\u044b \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0442 \u0432 \u0431\u0434 mangos, \u043d\u043e \u0434\u043e\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438\u0445 \u0443\u0436\u0435 \u043d\u0435 \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0442\u0440\u0443\u0434\u0430, \u0442\u0430\u043a \u043a\u0430\u043a \u044d\u0442\u043e \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e<\/p>\n<\/li>\n<li>\n<p>\u0412 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043a\u0432\u0435\u0441\u0442\u0430\u0445 \u0435\u0441\u0442\u044c \u0448\u0443\u043c\u044b, \u043a\u0430\u043a \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u043a\u0432\u0435\u0441\u0442 \u0443 \u043d\u0435\u0436\u0438\u0442\u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 &#171;\u043c\u043e\u0434\u0436\u043e&#187;, \u043c\u0438\u043b\u0435\u043d\u044c\u043a\u043e, \u043d\u043e \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u0431\u044b \u0431\u0435\u0437 \u043d\u0438\u0445<\/p>\n<\/li>\n<li>\n<p>\u041f\u0440\u0438\u043a\u043e\u043b\u044c\u043d\u043e, \u0447\u0442\u043e \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u043a\u043e\u0440\u043e\u0442\u043a\u0438\u0445 \u0441\u044d\u043c\u043f\u043b\u043e\u0432<\/p>\n<\/li>\n<\/ul>\n<p><strong>\u0427\u0442\u043e \u0435\u0449\u0435 \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c?<br \/><\/strong><\/p>\n<ul>\n<li>\n<p>\u0415\u0441\u0442\u044c \u043a\u043e\u043d\u0435\u0447\u043d\u043e \u043a\u043e\u0441\u044f\u043a\u0438, \u043d\u043e \u0438\u0445 \u043c\u043e\u0436\u043d\u043e \u0443\u043b\u0430\u0434\u0438\u0442\u044c \u0434\u0440\u0443\u0433\u0438\u043c\u0438 \u043d\u0435\u0439\u0440\u043e\u0441\u0435\u0442\u044f\u043c\u0438 \u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0440\u0430\u0437, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440:<\/p>\n<\/li>\n<li>\n<p>\u043d\u0430\u0442\u0440\u0430\u0432\u0438\u0442\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043d\u0435\u0439\u0440\u043e\u0441\u0435\u0442\u0435\u0439 \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u044f \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0430 \u043c\u043e\u0436\u043d\u043e \u043a\u0430\u043a \u043d\u0438 \u0441\u0442\u0440\u0430\u043d\u043d\u043e \u0443\u043b\u0443\u0447\u0448\u0438\u0442\u044c \u044d\u0442\u043e \u0441\u0430\u043c\u043e\u0435 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u043e \u0437\u0432\u0443\u043a\u043e\u0432\u044b\u0445 \u0434\u043e\u0440\u043e\u0436\u0435\u043a<\/p>\n<\/li>\n<li>\n<p>\u0432\u0437\u044f\u0442\u044c \u0437\u0430 \u043e\u0441\u043d\u043e\u0432\u0443 \u0430\u0443\u0434\u0438\u043e\u0434\u043e\u0440\u043e\u0436\u043a\u0438 \u043a\u0443\u0434\u0430 \u0434\u043b\u0438\u043d\u043d\u0435\u0435<\/p>\n<\/li>\n<li>\n<p>\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0432\u0441\u0435\u043c \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u0436\u0430\u043c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e LLM \u0438 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0433\u043e\u043b\u043e\u0441\u0430 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0445 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0439, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u043a\u043e\u0440\u043c\u0438\u043c \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0443\/\u0432\u0438\u0434\u0435\u043e\u0440\u044f\u0434\/\u0441\u043e\u0440\u0441 \u0438\u0437 \u043a\u043d\u0438\u0433 \u0438 \u0442\u0430\u043a \u0434\u0430\u043b\u0435\u0435, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0431\u043e\u043b\u0435\u0435 \u0436\u0438\u0432\u043e\u0439 \u0433\u043e\u043b\u043e\u0441 (\u043f\u0440\u0438\u0447\u0451\u043c \u043f\u043e \u0442\u043e\u0439 \u0436\u0435 \u043b\u043e\u0433\u0438\u043a\u0435 \u043c\u043e\u0436\u043d\u043e \u043e\u0431\u043e\u0433\u0430\u0442\u0438\u0442\u044c \u0434\u0438\u0430\u043b\u043e\u0433\u0438)<\/p>\n<\/li>\n<\/ul>\n<p><strong>\u0427\u0442\u043e \u0445\u043e\u0447\u0443 \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u0434\u0430\u043b\u044c\u0448\u0435:<br \/><\/strong><\/p>\n<ul>\n<li>\n<p>\u041f\u0435\u0440\u0435\u043e\u0437\u0432\u0443\u0447\u0438\u0442\u044c \u043a\u0430\u043a\u0443\u044e-\u043d\u0438\u0431\u0443\u0434\u044c \u0430\u043d\u0438\u043c\u0435\u0445\u0443 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0442\u0430\u043a\u043e\u0433\u043e \u0436\u0435 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430<\/p>\n<\/li>\n<li>\n<p>\u041f\u0435\u0440\u0435\u043e\u0437\u0432\u0443\u0447\u0438\u0442\u044c \u0444\u0438\u043b\u044c\u043c &#8212; \u043d\u0443\u0436\u043d\u043e \u0432\u0437\u044f\u0442\u044c \u0441\u0443\u0431\u0442\u0438\u0442\u0440\u044b \u0438 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u0438\u0445 \u043f\u043e \u0440\u043e\u043b\u044f\u043c, \u0434\u0430\u043b\u044c\u0448\u0435 \u0442\u0430\u043a\u0438\u043c \u0436\u0435 \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u0441\u043a\u043b\u0435\u0438\u0442\u044c, \u043f\u043e \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0443 \u043d\u0430 \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u043f\u0440\u043e\u0441\u0442\u043e \u0434\u043e\u0440\u043e\u0436\u043a\u0438 \u043f\u043e\u0432\u0435\u0440\u0445 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 &#8212; \u0443\u0436\u0435 \u0433\u0443\u0434<\/p>\n<\/li>\n<li>\n<p>\u0423\u043b\u0443\u0447\u0448\u0438\u0442\u044c \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u043e \u0437\u0432\u0443\u043a\u043e\u0432\u044b\u0445 \u0434\u043e\u0440\u043e\u0436\u0435\u043a<\/p>\n<\/li>\n<li>\n<p>\u0412\u0437\u044f\u0442\u044c \u0448\u0430\u0439\u0442\u0430\u043d-\u0432\u0438\u0434\u0435\u043e\u043a\u0430\u0440\u0442\u0443 \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u043e\u0433\u043e\u043d\u044f\u0442\u044c \u044d\u0442\u043e \u0434\u0435\u043b\u043e \u0432 \u0440\u0430\u0437\u044b \u0431\u044b\u0441\u0442\u0440\u0435\u0435<\/p>\n<\/li>\n<li>\n<p>\u041f\u043e\u0438\u0433\u0440\u0430\u0442\u044c\u0441\u044f \u0441 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0435\u0439, \u0447\u0442\u043e\u0431\u044b \u0432 k3c \u0431\u044b\u043b \u0431\u0430\u043b\u0430\u043d\u0441\u0438\u0440\u043e\u0432\u0449\u0438\u043a \u0438 \u0445\u043e\u0441\u0442\u0438\u0442\u044c \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b \u0441 tts, \u0430 \u043a \u043d\u0438\u043c \u0434\u043e\u043f\u0438\u0441\u0430\u0442\u044c \u043f\u0440\u043e\u0441\u0442\u0435\u0439\u0448\u0438\u0439 REST \u043b\u0438\u0431\u043e \u043f\u043e\u0438\u0441\u043a\u0430\u0442\u044c \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435.<\/p>\n<\/li>\n<li>\n<p>\u0415\u0449\u0435 \u0435\u0441\u0442\u044c \u043c\u044b\u0441\u043b\u044c \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u044d\u0442\u0443 \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438, \u0442\u043e \u0435\u0441\u0442\u044c \u0432\u044b \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0435 \u0432\u0438\u0434\u0435\u043e \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435, \u0438 \u043d\u0430 \u0445\u043e\u0434\u0443 \u0432\u0430\u043c \u0434\u043e\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0430\u044f \u043c\u0438\u043d\u0443\u0442\u0430, \u043f\u043e\u0447\u0442\u0438 \u043a\u0430\u043a \u0414\u0435\u043c\u043e\u043d \u041b\u0430\u043f\u043b\u0430\u0441\u0430, \u0433\u0433<\/p>\n<\/li>\n<li>\n<p>\u041c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u0430\u0442\u044c \u0432\u0441\u0435 \u0442\u0435\u043a\u0441\u0442\u044b \u043d\u0430 \u043a\u043b\u0438\u043d\u0433\u043e\u043d\u0441\u043a\u0438\u0439 \u0438\u043b\u0438 \u044d\u043b\u044c\u0444\u0438\u0439\u0441\u043a\u0438\u0439, \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u043e\u0436\u0438\u0432\u0438\u0442\u044c \u043b\u0430\u0442\u044b\u043d\u044c, \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0432\u0437\u044f\u0442\u044c sample \u0433\u043e\u043b\u043e\u0441\u0430 \u0437\u0430 \u043e\u0441\u043d\u043e\u0432\u0443, \u0430 \u0435\u0451 \u043a\u0430\u043a \u0440\u0430\u0437-\u0442\u0430\u043a\u0438 \u043c\u043e\u0436\u043d\u043e \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c &#8212; \u043f\u0440\u0438\u043a\u0438\u043d\u044c\u0442\u0435 \u0422\u0440\u0430\u043b\u043b \u0433\u043e\u0432\u043e\u0440\u0438\u0442 \u043d\u0430 \u043a\u043b\u0438\u043d\u0433\u043e\u043d\u0441\u043a\u043e\u043c. \u0418\u043b\u0438 \u0442\u043e\u0433\u043e \u0445\u0443\u0436\u0435 \u0437\u0430\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043c\u0438\u0440 \u0433\u043e\u0432\u043e\u0440\u0438\u0442\u044c \u044f\u0437\u044b\u043a\u0430\u043c\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u0431\u0440\u0435\u0434, \u043d\u043e \u043a\u0440\u0430\u0441\u0438\u0432\u043e \u0436\u0435.<\/p>\n<\/li>\n<\/ul>\n<p><strong>\u041a\u0430\u043a \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e \u0442\u044b \u043c\u043d\u0435 \u043c\u043e\u0436\u0435\u0448\u044c \u043f\u043e\u043c\u043e\u0447\u044c:<\/strong><\/p>\n<ul>\n<li>\n<p>\u041d\u0430\u043a\u0438\u0434\u044b\u0432\u0430\u0442\u044c \u0438\u0434\u0435\u0438 \u0432 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0438<\/p>\n<\/li>\n<li>\n<p>\u041a\u0443\u043f\u0438\u0442\u044c \u043f\u043e\u0434\u043f\u0438\u0441\u043a\u0443 \u043d\u0430 \u043c\u043e\u0439 \u043b\u0438\u0447\u043d\u044b\u0439 \u043f\u0430\u0431\u043b\u0438\u043a \u0432 \u0442\u0435\u043b\u0435\u0433\u0440\u0430\u043c\u043c\u0435 (\u0446\u0435\u043d\u043d\u0438\u043a \u043e\u0442 250 \u0440\u0443\u0431\u043b\u0435\u0439 \u0432 \u043c\u0435\u0441\u044f\u0446), \u0442\u0430\u043c \u044f \u0432\u044b\u043f\u0443\u0441\u043a\u0430\u044e \u043f\u043e\u0441\u0442\u044b \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0433\u043e \u043e\u0431\u044a\u0435\u043c\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435 \u0442\u044f\u043d\u0443\u0442 \u043d\u0430 \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u0445\u0430\u0431\u0440\u0430, \u043d\u043e \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0432\u043a\u043b\u044e\u0447\u0430\u044e\u0442 \u043f\u043e\u043b\u043d\u044b\u0439 \u0446\u0438\u043a\u043b \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u041f\u041e \u043f\u043e \u0432\u0441\u0435\u043c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u043c \u0442\u0435\u043c\u0430\u043c, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u043d\u0435\u0434\u0430\u0432\u043d\u043e \u044f \u0442\u0430\u043c \u043f\u0438\u0441\u0430\u043b \u043f\u0440\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u0434\u0435\u043a\u043e\u0440\u0430\u0442\u043e\u0440\u043e\u0432 \u0432 typescript \u0438\u043b\u0438 \u0440\u0430\u0437\u0432\u0435\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u0435 \u0441\u0432\u043e\u0435\u0433\u043e email-\u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043d\u0430\u0431\u043e\u0440\u043e\u0432 \u0443\u0442\u0438\u043b\u0438\u0442, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e gui. \u0412 \u043e\u0431\u0449\u0435\u043c \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0435 \u0432\u0441\u0435 \u0438 \u043a\u0443\u043f\u0438\u0442\u0435 \u043c\u043d\u0435 \u043a\u043e\u0444\u0435, \u0430 \u044f \u0438 \u0434\u0430\u043b\u044c\u0448\u0435 \u0431\u0443\u0434\u0443 \u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u043f\u0438\u0441\u0430\u0442\u044c \u0447\u0442\u043e-\u0442\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u043e\u0435 \u0438 \u043e\u0442\u043a\u0440\u044b\u0442\u043e\u0435 <a href=\"https:\/\/t.me\/digitable_sub_bot\" rel=\"noopener noreferrer nofollow\">https:\/\/t.me\/digitable_sub_bot<\/a><\/p>\n<\/li>\n<li>\n<p>\u0415\u0441\u043b\u0438 \u0445\u043e\u0442\u0438\u0442\u0435 \u0447\u0442\u043e\u0431\u044b \u044f \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u043b \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0432\u0430\u043c \u043a\u0430\u043a\u043e\u0439-\u043d\u0438\u0431\u0443\u0434\u044c gui \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u0441\u0451 \u044d\u0442\u043e \u043f\u043e\u0434 \u043a\u0430\u043f\u043e\u0442\u043e\u043c \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0438 \u0442\u0430\u043a \u0434\u0430\u043b\u0435\u0435 \u0442\u043e\u0436\u0435 \u043f\u0438\u043d\u0433\u0443\u0439\u0442\u0435, \u0437\u0430\u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043e\u0432\u0430\u043d \u0432 \u0432\u0430\u0448\u0438\u0445 \u0434\u043e\u043d\u0430\u0442\u0430\u0445, \u0447\u0442\u043e\u0431\u044b \u0431\u043e\u043b\u044c\u0448\u0435 \u0442\u0432\u043e\u0440\u0438\u0442\u044c \u0432\u0441\u044f\u043a\u043e\u0433\u043e \u043d\u0435\u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e\u0433\u043e, \u0442\u0430\u043a-\u0442\u043e \u043c\u043e\u0436\u0435\u043c \u0434\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u0442\u044c\u0441\u044f \u043e\u0431 \u043e\u043f\u043b\u0430\u0442\u0435 \u0447\u0435\u0440\u0435\u0437 \u0442\u0435\u043b\u0435\u0433\u0443 \u0438\u043b\u0438 paypal)<\/p>\n<\/li>\n<\/ul>\n<p>\u041f\u043e\u0434\u043f\u0438\u0441\u044b\u0432\u0430\u0439\u0441\u044f <a href=\"https:\/\/t.me\/digitable_sub_bot\" rel=\"noopener noreferrer nofollow\">https:\/\/t.me\/digitable_sub_bot<\/a> \ud83d\ude42 \u041b\u043e\u043a&#8217;\u0442\u0430\u0440 \u043e\u0433\u0430\u0440!<\/p>\n<ul>\n<li>\n<p>\u041e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0435 \u0441\u043f\u0430\u0441\u0438\u0431\u043e \u042f\u0440\u043e\u0441\u043b\u0430\u0432\u0443 \u0412\u0434\u043e\u0432\u0438\u043d\u0443 \u0437\u0430 \u043f\u043e\u043c\u043e\u0449\u044c \u0432 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u043d\u0430 \u0435\u0433\u043e \u043a\u043e\u043c\u043f\u0435, \u043f\u043e\u043a\u0430 \u044f \u043f\u044b\u0442\u0430\u043b\u0441\u044f \u0432\u043a\u0443\u0440\u0438\u0442\u044c \u043a\u0430\u043a \u044d\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043d\u0430 \u0430\u0440\u0435\u043d\u0434\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u0442\u0430\u0447\u043a\u0435 \u0431\u044b\u0441\u0442\u0440\u0435\u0435<\/p>\n<\/li>\n<li>\n<p>\u041d\u0430\u043f\u0438\u0441\u0430\u043b \u0435\u0449\u0435 \u0438 \u0432 \u0434\u0438\u0441\u043a\u043e\u0440\u0434 \u0440\u0435\u0431\u044f\u0442\u0430\u043c<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/1c9\/008\/003\/1c90080036caf208b18fe0692673ad79.png\" width=\"1993\" height=\"1415\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/1c9\/008\/003\/1c90080036caf208b18fe0692673ad79.png\"\/><\/figure>\n<p>\u0418\u0437 \u0437\u0430\u0431\u0430\u0432\u043d\u043e\u0433\u043e: \u043d\u0430\u0448\u043b\u0438, \u0447\u0442\u043e \u0447\u0430\u0441\u0442\u044c \u043a\u0432\u0435\u0441\u0442\u043e\u0432 \u043f\u0440\u043e\u043f\u0430\u043b\u0430, \u043d\u0435 \u0445\u0432\u0430\u0442\u0430\u0435\u0442 1200-1500 \u0444\u0430\u0439\u043b\u043e\u0432, \u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c, \u0447\u0442\u043e \u0432 \u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u0438\u0445 \u043a\u0432\u0435\u0441\u0442\u0430\u0445 \u043d\u0435\u0442 \u0441\u043a\u043b\u043e\u043d\u0435\u043d\u0438\u044f \u0433\u043b\u0430\u0433\u043e\u043b\u043e\u0432, \u0430 \u0432 \u0440\u0443\u0441\u0441\u043a\u043e\u043c \u0435\u0441\u0442\u044c, \u0442\u0430\u043a \u0447\u0442\u043e \u043e\u043f\u044f\u0442\u044c \u0433\u043e\u043d\u044f\u0435\u043c \u0434\u043e \u043f\u043e\u0442\u0435\u0440\u0438 \u043f\u0443\u043b\u044c\u0441\u0430, \u043d\u043e \u044d\u0442\u043e \u0443\u0436\u0435 \u0434\u0440\u0443\u0433\u0430\u044f \u0438\u0441\u0442\u043e\u0440\u0438\u044f<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/upload_files\/efd\/044\/c7a\/efd044c7a6290d7e5054ca1a22d17a09.jpg\" alt=\"\u0411\u043e\u0433\u0430\u0442\u044b\u0439 \u0440\u0443\u0441\u0441\u043a\u0438\u0439 \u044f\u0437\u044b\u043a\" title=\"\u0411\u043e\u0433\u0430\u0442\u044b\u0439 \u0440\u0443\u0441\u0441\u043a\u0438\u0439 \u044f\u0437\u044b\u043a\" width=\"1025\" height=\"467\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/efd\/044\/c7a\/efd044c7a6290d7e5054ca1a22d17a09.jpg\" data-blurred=\"true\"\/><\/p>\n<div><figcaption>\u0411\u043e\u0433\u0430\u0442\u044b\u0439 \u0440\u0443\u0441\u0441\u043a\u0438\u0439 \u044f\u0437\u044b\u043a<\/figcaption><\/div>\n<\/figure>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/div>\n<\/div>\n<\/div>\n<p><!----><!----><\/div>\n<p><!----><\/p>\n<div class=\"tm-article-poll-container\"><!--[--><\/p>\n<div class=\"tm-article-poll tm-article-poll_variant-bordered\">\n<div class=\"tm-notice tm-notice_positive tm-article-poll__notice\"><!----><\/p>\n<div class=\"tm-notice__inner\"><!----><\/p>\n<div class=\"tm-notice__content\" data-test-id=\"notice-content\"><!--[--><span>\u0422\u043e\u043b\u044c\u043a\u043e \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438 \u043c\u043e\u0433\u0443\u0442 \u0443\u0447\u0430\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0432 \u043e\u043f\u0440\u043e\u0441\u0435. <a rel=\"nofollow\" href=\"\/kek\/v1\/auth\/habrahabr\/?back=\/ru\/articles\/818513\/&#038;hl=ru\">\u0412\u043e\u0439\u0434\u0438\u0442\u0435<\/a>, \u043f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430.<\/span><!--]--><\/div>\n<\/div>\n<\/div>\n<p><!--[--><\/p>\n<div class=\"tm-article-poll__header\">\u041a\u0430\u043a \u0444\u043e\u0440\u043c\u0430\u0442 \u0432 \u0446\u0435\u043b\u043e\u043c? \u041d\u0430 \u0442\u0435\u043b\u0435\u0433\u0443 \u043c\u043e\u044e \u043f\u043e\u0434\u043f\u0438\u0448\u0435\u0448\u044c\u0441\u044f? \u041a\u043e\u0444\u0435 \u043c\u043d\u0435 \u043a\u0443\u043f\u0438\u0448\u044c?<\/div>\n<div class=\"tm-article-poll__answers\"><!--[--><\/p>\n<div class=\"tm-article-poll__answer\">\n<div class=\"tm-article-poll__answer-data\"><span class=\"tm-article-poll__answer-percent\">36.36% <\/span><span class=\"tm-article-poll__answer-label\">\u041d\u043e\u0440\u043c, \u043a\u0443\u043f\u043b\u044e<\/span><span class=\"tm-article-poll__answer-votes\">4<\/span><\/div>\n<div class=\"tm-article-poll__answer-bar\">\n<div class=\"tm-article-poll__answer-progress\" style=\"width: 36.36%\"><\/div>\n<\/div>\n<\/div>\n<div class=\"tm-article-poll__answer\">\n<div class=\"tm-article-poll__answer-data\"><span class=\"tm-article-poll__answer-percent tm-article-poll__answer-percent_winning\">45.45% <\/span><span class=\"tm-article-poll__answer-label\">\u041d\u043e\u0440\u043c, \u043d\u0435 \u043a\u0443\u043f\u043b\u044e<\/span><span class=\"tm-article-poll__answer-votes\">5<\/span><\/div>\n<div class=\"tm-article-poll__answer-bar\">\n<div class=\"tm-article-poll__answer-progress tm-article-poll__answer-progress_winning\" style=\"width: 45.45%\"><\/div>\n<\/div>\n<\/div>\n<div class=\"tm-article-poll__answer\">\n<div class=\"tm-article-poll__answer-data\"><span class=\"tm-article-poll__answer-percent\">0% <\/span><span class=\"tm-article-poll__answer-label\">\u041d\u0435 \u043d\u043e\u0440\u043c, \u043a\u0443\u043f\u043b\u044e<\/span><span class=\"tm-article-poll__answer-votes\">0<\/span><\/div>\n<div class=\"tm-article-poll__answer-bar\">\n<div class=\"tm-article-poll__answer-progress\" style=\"width: 0%\"><\/div>\n<\/div>\n<\/div>\n<div class=\"tm-article-poll__answer\">\n<div class=\"tm-article-poll__answer-data\"><span class=\"tm-article-poll__answer-percent\">0% <\/span><span class=\"tm-article-poll__answer-label\">\u041d\u0435 \u043d\u043e\u0440\u043c, \u043d\u0435 \u043a\u0443\u043f\u043b\u044e<\/span><span class=\"tm-article-poll__answer-votes\">0<\/span><\/div>\n<div class=\"tm-article-poll__answer-bar\">\n<div class=\"tm-article-poll__answer-progress\" style=\"width: 0%\"><\/div>\n<\/div>\n<\/div>\n<div class=\"tm-article-poll__answer\">\n<div class=\"tm-article-poll__answer-data\"><span class=\"tm-article-poll__answer-percent\">27.27% <\/span><span class=\"tm-article-poll__answer-label\">\u0427\u0442\u043e \u044d\u0442\u043e \u0438 \u0437\u0430\u0447\u0435\u043c<\/span><span class=\"tm-article-poll__answer-votes\">3<\/span><\/div>\n<div class=\"tm-article-poll__answer-bar\">\n<div class=\"tm-article-poll__answer-progress\" style=\"width: 27.27%\"><\/div>\n<\/div>\n<\/div>\n<p><!--]--><\/div>\n<div class=\"tm-article-poll__stats\"> \u041f\u0440\u043e\u0433\u043e\u043b\u043e\u0441\u043e\u0432\u0430\u043b\u0438 11 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439.   \u0412\u043e\u0437\u0434\u0435\u0440\u0436\u0430\u043b\u0441\u044f 1 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c. <\/div>\n<p><!--]--><\/div>\n<p><!--]--><\/div>\n<p> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/articles\/818513\/\"> https:\/\/habr.com\/ru\/articles\/818513\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<h2>\u0421\u0438\u043d\u043e\u043f\u0441\u0438\u0441<\/h2>\n<p>\u0417\u0434\u0440\u0430\u0432\u0441\u0442\u0432\u0443\u0439\u0442\u0435-\u0437\u0434\u0440\u0430\u0432\u0441\u0442\u0432\u0443\u0439\u0442\u0435, \u0438\u0433\u0440\u0430\u044e \u044f \u0437\u043d\u0430\u0447\u0438\u0442 \u0432 \u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0439 World of Warcraft \u0438 \u043f\u043e\u043d\u0438\u043c\u0430\u044e, \u0447\u0442\u043e \u0438\u0433\u0440\u0430 \u0442\u043e\u0441\u043a\u043b\u0438\u0432\u0430 \u0438\u0437-\u0437\u0430 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u044f \u0431\u043e\u043b\u0435\u0435-\u043c\u0435\u043d\u0435\u0435 \u043e\u0437\u0432\u0443\u0447\u0435\u043d\u043d\u044b\u0445 \u043a\u0432\u0435\u0441\u0442\u043e\u0432. \u041a\u043e\u043d\u0435\u0447\u043d\u043e, \u0438\u043d\u0434\u0438-\u0441\u0442\u0443\u0434\u0438\u044f \u041c\u0435\u0442\u0435\u043b\u0438\u0446\u0430 \u043d\u0435 \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u0430 \u043e\u0437\u0432\u0443\u0447\u0438\u0442\u044c \u0432\u0441\u044e \u0441\u0432\u043e\u044e \u0438\u0433\u0440\u0443, \u0434\u0430 \u0438 \u043f\u043e\u043d\u044f\u0442\u043d\u043e, \u0447\u0442\u043e \u0441\u044e\u0436\u0435\u0442 \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u0435\u0442\u0441\u044f, \u0430 \u043b\u044e\u0434\u0438 \u0438\u043c\u0435\u044e\u0442 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e \u043c\u0435\u043d\u044f\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u0443 \u0438\u043b\u0438, \u0434\u0430 \u044d\u0442\u043e \u043f\u0435\u0447\u0430\u043b\u044c\u043d\u043e, \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0433\u0438\u0431\u0435\u043b\u0438, \u043a\u0430\u043a \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0441\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c \u0441 \u043e\u0437\u0432\u0443\u0447\u043a\u043e\u0439 \u0410\u0440\u0442\u0430\u0441\u0430 \u041c\u0435\u043d\u0435\u0442\u0438\u043b\u0430 \u0432 Warcraft III: Frozen Throne.<\/p>\n<p>\u0412 \u043e\u0431\u0449\u0435\u043c, \u0437\u0430\u0432\u0430\u0440\u0438\u0432\u0430\u0439\u0442\u0435 \u0447\u0430\u0439, \u043a\u0430\u043a \u0438 \u0432\u0441\u0435 \u043c\u043e\u0438 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0435 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438, \u044d\u0442\u0430 \u0441\u0442\u0430\u0442\u044c\u044f \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 (\u0431|\u0432)\u043b\u043e\u0433\u0430.<\/p>\n<div class=\"tm-iframe_temp\" data-src=\"https:\/\/embedd.srv.habr.com\/iframe\/6658edf6ee339fd48b150f8f\" data-style=\"\" id=\"6658edf6ee339fd48b150f8f\" width=\"\"><\/div>\n<div class=\"tm-iframe_temp\" data-src=\"https:\/\/embedd.srv.habr.com\/iframe\/6658ee2fee68229db63a028d\" data-style=\"\" id=\"6658ee2fee68229db63a028d\" width=\"\"><\/div>\n<h2>\u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435<\/h2>\n<p>\u0418 \u0432\u043e\u0442 \u044f \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e-\u043d\u0435\u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e \u043d\u0430\u0442\u044b\u043a\u0430\u044e\u0441\u044c \u043d\u0430 \u0430\u0434\u0434\u043e\u043d\u044b (\u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f) \u0434\u043b\u044f wow. \u0414\u043e \u044d\u0442\u043e\u0433\u043e \u0438\u043c\u0438 \u043d\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0441\u044f, \u0442\u0430\u043a \u043a\u0430\u043a \u0432 \u043f\u0435\u0440\u0432\u0443\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c, \u044f &#8212; \u0438\u0433\u0440\u043e\u043a \u043b\u043e\u0440\u0430, \u043c\u043d\u0435 \u043d\u0435 \u043e\u0441\u043e\u0431\u043e \u0431\u044b\u043b\u0430 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0430 PvP \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0449\u0430\u044f \u0438\u043b\u0438 \u043f\u043e\u0445\u043e\u0434\u044b \u0432 \u043f\u043e\u0434\u0437\u0435\u043c\u0435\u043b\u044c\u044f.<\/p>\n<p>\u0421\u0440\u0435\u0434\u0438 \u043f\u0430\u0447\u043a\u0438 \u0430\u0434\u0434\u043e\u043d\u043e\u0432 \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u0440\u0435\u0431\u044f\u0442\u0430 &#8212; <a href=\"https:\/\/www.curseforge.com\/wow\/addons\/voiceover\" rel=\"noopener noreferrer nofollow\">https:\/\/www.curseforge.com\/wow\/addons\/voiceover<\/a>, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043a\u0430\u043a\u0438\u043c-\u0442\u043e \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u0441\u0434\u0435\u043b\u0430\u043b\u0438 \u043e\u0437\u0432\u0443\u0447\u043a\u0443 \u0434\u043b\u044f \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u0436\u0435\u0439. \u0412 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0438 \u0441\u043a\u0430\u0437\u0430\u043d\u043e: &#171;\u0432\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0441\u043a\u0430\u0447\u0430\u0442\u044c voice pack&#187;, \u0442\u043e \u0435\u0441\u0442\u044c \u0430\u0434\u0434\u043e\u043d \u0438\u043c\u0435\u0435\u0442 \u043a\u0430\u043a\u043e\u0439-\u0442\u043e dependency.<\/p>\n<figure class=\"full-width\"><\/figure>\n<p>\u0422\u043e \u0435\u0441\u0442\u044c \u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f player-\u043e\u043c, \u0430 \u0432\u043e\u0442 \u0441\u0430\u043c\u0430 \u043e\u0437\u0432\u0443\u0447\u043a\u0430 &#8212; \u044d\u0442\u043e \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u0430\u0440\u0445\u0438\u0432. \u0418 \u0432\u043d\u0438\u0437\u0443 \u0435\u0441\u0442\u044c \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 GitHub. \u041e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u043c<\/p>\n<figure class=\"full-width\"><\/figure>\n<p>\u0410 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u044f\u0437\u044b\u043a\u0430 \u0443 \u0440\u0435\u0431\u044f\u0442 \u0443\u0440\u0435\u0437\u0430\u043d\u0430, \u0441\u0443\u0434\u044f \u043f\u043e Usage<\/p>\n<figure class=\"full-width\"><\/figure>\n<p>\u042f \u043d\u0430\u0448\u0435\u043b \u0441\u0441\u044b\u043b\u043a\u0443 \u043d\u0430 \u0438\u0445 Discord \u0438 \u043f\u043e\u043b\u0435\u0437 \u0442\u0443\u0434\u044b, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u043e\u044f\u0441\u043d\u0438\u0442\u044c \u0432 \u0447\u0451\u043c \u0434\u0435\u043b\u043e, \u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u0440\u0435\u0431\u044f\u0442\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438 3rd party, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u043b\u0430 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c text-to-speech \u043e\u0441\u043d\u043e\u0432\u044b\u0432\u0430\u044f\u0441\u044c \u043d\u0430 \u043a\u0443\u0441\u043e\u0447\u043a\u0430\u0445 \u0433\u043e\u043b\u043e\u0441\u043e\u0432. \u0422\u043e \u0435\u0441\u0442\u044c \u0432\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0433\u043e\u043b\u043e\u0441\u0430 \u043f\u043e\u0434 \u043a\u0430\u0436\u0434\u0443\u044e \u0440\u0430\u0441\u0443 \u0438 \u043a\u0430\u0436\u0434\u044b\u0439 \u043f\u043e\u043b, \u0430 \u0434\u0430\u043b\u044c\u0448\u0435, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0438\u0445 \u043d\u0435\u0439\u0440\u043e\u043d\u043a\u0443 \u043d\u0430\u0433\u0435\u043d\u0435\u0440\u0438\u0442\u044c \u0441\u0435\u0431\u0435 \u0432\u0441\u0451 \u0447\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u0438 \u0441\u043b\u043e\u0436\u0438\u0442\u044c \u0432 \u0430\u0443\u0434\u0438\u043e\u0444\u0430\u0439\u043b\u044b.<\/p>\n<p>\u0427\u0435\u043b \u043f\u0438\u0448\u0435\u0442, \u0447\u0442\u043e \u043f\u043e\u0442\u0440\u0430\u0442\u0438\u043b \u043d\u0435 \u043c\u0435\u043d\u0435\u0435 600 \u0431\u0430\u043a\u0441\u043e\u0432 \u0434\u043b\u044f \u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438, \u043d\u043e \u0432\u043e\u0442 \u0442\u0440\u0430\u0442\u0438\u0442\u044c \u0434\u0430\u043b\u044c\u0448\u0435 &#8212; \u0434\u0435\u043d\u0435\u0433 \u043d\u0435\u0442. \u042f \u0445\u043e\u0442\u0435\u043b \u0431\u044b\u043b\u043e \u043f\u043b\u044e\u043d\u0443\u0442\u044c \u0438 \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0440\u0443\u0441\u0441\u043a\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e \u0442\u0430\u043c \u0436\u0435 \u0437\u0430\u043f\u043b\u0430\u0442\u0438\u0432 \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043d\u0443\u0436\u043d\u043e. \u041d\u043e \u043f\u043e \u043f\u043e\u0434\u0441\u0447\u0435\u0442\u0430\u043c \u0442\u0430\u0440\u0438\u0444\u0430 \u0442\u0430\u043c \u0432\u044b\u0445\u043e\u0434\u0438\u0442 \u0437\u0430 2\u043a \u0431\u0430\u043a\u0441\u043e\u0432 \u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0442\u043e\u0431\u044b \u0447\u0442\u043e-\u0442\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e\u0435.<\/p>\n<figure class=\"full-width\"><\/figure>\n<p>\u0418 \u0442\u0443\u0442 \u0443\u0441\u043b\u044b\u0448\u0430\u0442\u044c \u043a\u0432\u0435\u0441\u0442\u044b \u043d\u0430 \u0440\u0443\u0441\u0441\u043a\u043e\u043c \u0441\u0442\u0430\u043b\u043e \u0446\u0435\u043b\u044c\u044e. <em>\u041d\u0435 \u0442\u043e, \u0447\u0442\u043e\u0431\u044b \u044f \u043d\u0435 \u0437\u043d\u0430\u044e \u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u0438\u0439 (\u0438 IELTS \u0441\u0434\u0430\u0432\u0430\u043b, \u0438 \u043d\u0430 Microsoft \u0440\u0430\u0431\u043e\u0442\u0430\u043b, \u0438 \u0432 \u0411\u0435\u0440\u043b\u0438\u043d\u0435 \u0433\u043e\u0434 \u043f\u0440\u043e\u0436\u0438\u043b (\u0435\u0441\u043b\u0438 \u043d\u0430\u0434\u043e \u043c\u043e\u0433\u0443 \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0441\u0432\u043e\u0439 \u0432\u0437\u0433\u043b\u044f\u0434 \u043d\u0430 \u0442\u043e, \u043a\u0430\u043a \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043d\u0435\u043f\u0440\u0435\u0434\u0432\u0437\u044f\u0442\u0430\u044f \u0436\u0438\u0437\u043d\u044c \u0441\u0435\u043c\u0435\u0439\u043d\u043e\u0433\u043e \u0447\u0435\u043b\u043e\u0432\u0435\u043a\u0430, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0441\u043e\u0432\u0435\u0442\u044b \u043f\u0440\u0438 \u0440\u0435\u043b\u043e\u043a\u0430\u0446\u0438\u0438, \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u043e\u0441\u0438\u0433\u043d\u0430\u043b\u044c\u0442\u0435 \u0432 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0445)), \u0434\u0430 \u0438 \u0432 \u0446\u0435\u043b\u043e\u043c \u043c\u043e\u0433\u0443 \u0441\u0432\u043e\u0439 \u0433\u0430\u0439\u0434 \u043f\u043e \u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u043e\u043c\u0443 \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043a\u0430\u043a \u0435\u0433\u043e \u0437\u0430 \u0433\u043e\u0434 \u043e\u0441\u0432\u043e\u0438\u0442\u044c \u0434\u043e \u0440\u0430\u0437\u0433\u043e\u0432\u043e\u0440\u043d\u043e\u0433\u043e.<br \/><\/em><br \/>\u0421\u043e\u0440\u0440\u0438 \u0437\u0430 \u043e\u0444\u0444\u0442\u043e\u043f, \u0435\u0434\u0435\u043c \u0434\u0430\u043b\u044c\u0448\u0435: \u0412 \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u043c\u043e\u043c\u0435\u043d\u0442 \u044f \u043f\u043e\u0434\u0443\u043c\u0430\u043b, \u0430 \u0447\u0442\u043e \u0435\u0441\u043b\u0438 \u0440\u0435\u0431\u044f\u0442\u0430 \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0435 \u0448\u0430\u0440\u044f\u0442, \u0447\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u044e\u0437\u0430\u0442\u044c open source?<br \/> \u0422\u0430\u043c \u043a\u0430\u043a \u0440\u0430\u0437 \u0435\u0441\u0442\u044c \u0446\u0435\u043b\u0430\u044f \u0442\u044c\u043c\u0430 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0437\u0430\u043a\u0440\u044b\u0432\u0430\u044e\u0449\u0438\u0439\u0441\u044f <a href=\"https:\/\/github.com\/coqui-ai\/TTS\" rel=\"noopener noreferrer nofollow\">https:\/\/github.com\/coqui-ai\/TTS<\/a><br \/> \u0414\u0430\u043b\u0435\u0435 \u0432 \u0445\u043e\u0434\u0435 \u043c\u043e\u0438\u0445 \u0440\u0430\u0437\u043c\u044b\u0448\u043b\u0435\u043d\u0438\u0439 \u044f \u0432\u044b\u0441\u0442\u0440\u043e\u0438\u043b \u0446\u0435\u043b\u044b\u0439 \u0447\u0443\u0434\u043e\u0432\u0438\u0449\u043d\u044b\u0439 \u043f\u043b\u0430\u043d \u043f\u043e \u0443\u043d\u0438\u0447\u0442\u043e\u0436\u0435\u043d\u0438\u044e \u044f\u0437\u044b\u043a\u043e\u0432 \u0432 \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0435, \u043d\u043e \u0437\u0430\u0431\u0438\u043b \u043d\u0430 \u043d\u0435\u0433\u043e. \u041a\u0430\u043a \u0432\u0441\u0435\u0433\u0434\u0430. \u041d\u043e \u0432\u043e\u0442 \u043d\u0435\u0434\u0430\u0432\u043d\u043e \u044f \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u043e\u0434\u0443\u043c\u0430\u043b &#8212; \u0430 \u043c\u043e\u0436\u0435\u0442 \u043c\u043d\u0435 \u043f\u0435\u0440\u0435\u0432\u0435\u0441\u0442\u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u0438\u0445 \u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e \u043d\u0430 \u0440\u0443\u0441\u0441\u043a\u0443\u044e?<br \/> Coqui-ai tts (\u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u041a\u041c\u041a \u043f\u043e\u0432\u0435\u0440\u0445 Mozilla TTS) \u0443\u043c\u0435\u0435\u0442 \u043a\u043b\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0433\u043e\u043b\u043e\u0441 \u0438 \u0442\u0440\u0430\u0432\u0438\u0442\u044c \u0435\u0433\u043e \u043d\u0430 \u043d\u0443\u0436\u043d\u044b\u0439 \u0442\u0435\u043a\u0441\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0441\u0435\u043c\u043f\u043b \u0445\u043e\u0442\u044c \u043d\u0430 6 \u0441\u0435\u043a\u0443\u043d\u0434. <\/p>\n<p>\u041d\u0430\u0434\u043e \u043f\u043e\u043d\u044f\u0442\u044c \u043a\u0430\u043a \u0443\u0441\u0442\u0440\u043e\u0435\u043d \u044d\u0442\u043e\u0442 \u0441\u0430\u043c\u044b\u0439 \u0430\u0434\u0434\u043e\u043d.<\/p>\n<h2>\u041a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u0430\u0434\u0434\u043e\u043d, \u0434\u0430 \u0438 \u0432\u043e\u043e\u0431\u0449\u0435 \u0430\u0434\u0434\u043e\u043d\u044b \u0432 \u0446\u0435\u043b\u043e\u043c<\/h2>\n<p>\u0412 \u0445\u043e\u0434\u0435 \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u044f, \u0441\u0442\u0430\u043b\u043e \u043f\u043e\u043d\u044f\u0442\u043d\u043e, \u0447\u0442\u043e \u0432\u0441\u0451 \u043a\u0443\u0434\u0430 \u043f\u0440\u043e\u0441\u0442\u043e-\u0441\u043b\u043e\u0436\u043d\u043e. \u0410\u0434\u0434\u043e\u043d\u044b \u044d\u0442\u043e \u0432\u0441\u0440\u0430\u0442\u044b\u0439 lua-\u043a\u043e\u0434, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0435 \u0438\u043c\u0435\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f \u043d\u0438 \u043a \u0447\u0435\u043c\u0443 \u0432\u043d\u0435 WoW-\u0430. \u0422\u043e \u0435\u0441\u0442\u044c \u0432\u044b \u043d\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u0442\u0430\u043a \u043f\u043e\u0441\u0442\u0443\u0447\u0430\u0442\u044c\u0441\u044f \u0432\u043e \u0432\u043d\u0435\u0448\u043d\u0438\u0439 REST API \u0438\u043b\u0438 \u043e\u0431\u0440\u0430\u0449\u0430\u0442\u044c\u0441\u044f \u043a I\/O. \u0423 \u0432\u0430\u0441 \u0435\u0441\u0442\u044c \u044d\u0442\u043e\u0442 \u0434\u043e\u0441\u0442\u0443\u043f \u043d\u0430 \u043c\u043e\u043c\u0435\u043d\u0442 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0430\u0434\u0434\u043e\u043d\u0430, \u043d\u043e \u043d\u0435 \u0431\u043e\u043b\u0435\u0435. \u0410 \u0442\u0430\u043a \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0442\u0435\u043b\u0435\u0433\u0440\u0430\u043c \u0431\u043e\u0442\u0430 \u0432 \u0447\u0430\u0442 \u0432 wow, \u043d\u043e \u0443\u0432\u044b, \u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0440\u0430\u0437, \u043d\u0430 \u0443\u043c\u0435 \u0435\u0441\u0442\u044c \u043f\u0430\u0440\u0430 \u043b\u0430\u0437\u0435\u0435\u043a, \u043d\u043e \u043b\u0435\u043d\u044c.<br \/> \u0427\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u043b\u0438 \u0440\u0435\u0431\u044f\u0442\u0430 &#8212; \u043d\u0430\u0448\u043b\u0438 \u043e\u0442\u043a\u0440\u044b\u0442\u0443\u044e \u0431\u0434 \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u043a\u0432\u0435\u0441\u0442\u043e\u0432, \u0432\u0435\u0441\u0438\u0442 \u043e\u043d\u0430 \u0441\u043a\u043e\u043b\u044c\u043a\u043e-\u0442\u043e \u0442\u0430\u043c. <\/p>\n<p>\u0417\u043d\u0430\u0447\u0438\u0442 \u0434\u0435\u043b\u0430\u044e\u0442 \u043e\u043d\u0438 \u0442\u0430\u043a:<\/p>\n<p>\u041d\u0430 \u043a\u0430\u0436\u0434\u0443\u044e \u0440\u0430\u0441\u0443 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f 2 \u0433\u043e\u043b\u043e\u0441\u0430 &#8212; \u043c\u0443\u0436\u0441\u043a\u043e\u0439 \u0438 \u0436\u0435\u043d\u0441\u043a\u0438\u0439, \u0430 \u0440\u0430\u0441 \u043e\u043a\u043e\u043b\u043e 15 \u043c\u0438\u043d\u0438\u043c\u0443\u043c, \u0438\u0442\u043e\u0433\u043e \u043f\u043e\u0440\u044f\u0434\u043a\u0430 30 \u0433\u043e\u043b\u043e\u0441\u043e\u0432 \u0438 10\u043a\u043a \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 \u0442\u0435\u043a\u0441\u0442\u0430 \u043d\u0430 \u043a\u0430\u0436\u0434\u0443\u044e. \u041c\u0434\u0435.<\/p>\n<h2>\u041f\u0440\u0438\u0441\u0442\u0443\u043f\u0430\u0435\u043c \u043a \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0435 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f<\/h2>\n<p>\u0418\u0434\u0443 \u043a\u043b\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439, \u043d\u043e \u0447\u0435\u0440\u0435\u0437 GitHub Codespaces. \u041f\u043e\u0447\u0435\u043c\u0443? \u041f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043d\u0430 Mac Studio \u0441\u0442\u043e\u0438\u0442 ARM, \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c x86 \u043a\u043e\u043c\u043f \u043c\u043d\u0435 \u043b\u0435\u043d\u044c, \u0447\u0435\u0440\u0435\u0437 UTM \u0435\u0441\u0442\u044c \u0432\u0438\u043d\u0434\u0430 \u0438 NetBSD \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0440\u0430\u0431\u043e\u0447\u0438\u0445 \u043c\u0430\u0448\u0438\u043d, \u043d\u043e \u0432\u043e\u0442 \u0434\u043b\u044f \u0442\u043e\u0433\u043e \u0432\u0441\u0440\u0430\u0442\u043e\u0433\u043e tts \u043d\u0443\u0436\u043d\u0430 \u0431\u0443\u0431\u0443\u043d\u0442\u0430, \u0434\u0430 \u0438 \u0441\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e \u0432 x86. \u0410 \u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0447\u0435\u0440\u0435\u0437 Podman \u0438 \u0437\u0430\u0441\u0438\u0440\u0430\u0442\u044c \u0441\u0432\u043e\u044e \u043c\u0430\u0448\u0438\u043d\u0443 \u043c\u043d\u0435 \u043b\u0435\u043d\u044c \u043f\u043e\u0442\u043e\u043c \u0432\u044b\u0447\u0438\u0449\u0430\u0442\u044c \u0432\u0441\u0451 \u044d\u0442\u043e \u0434\u043e\u0431\u0440\u043e. \u0412 \u043e\u0431\u0449\u0435\u043c \u043b\u0443\u0447\u0448\u0435\u0435 \u0432\u0440\u0430\u0433 \u0445\u043e\u0440\u043e\u0448\u0435\u0433\u043e. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u0440\u043e\u0441\u0442\u043e \u0432 GitHub Codespaces.<\/p>\n<figure class=\"full-width\"><\/figure>\n<p>\u0412 \u0438\u0445 \u0436\u0435 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u043c \u043e\u0431\u043e\u0433\u0430\u0449\u0430\u0442\u044c \u043f\u0435\u0442\u0443\u0445\u043e\u043d-\u043f\u0440\u043e\u0435\u043a\u0442, \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0442\u0443\u0434\u044b TTS<\/p>\n<pre><code class=\"bash\">python -m venv .venv . .venv\/bin\/activate echo TTS >> requirements.txt pip install -r requirements.txt<\/code><\/pre>\n<p>\u0414\u0430\u043b\u044c\u0448\u0435 \u0442\u0430\u0449\u0438\u043c \u0438\u0445 Soundpack \u0432 \u043f\u0430\u043f\u043e\u0447\u043a\u0443 \u0441 translator-\u043e\u043c (\u044d\u0442\u043e\u0442 \u043f\u0430\u043a \u0432\u0435\u0441\u0438\u0442 1 \u0433\u0431)<\/p>\n<pre><code class=\"bash\">mkdir translator cd translator mkdir assets\/wow-classic-en wget https:\/\/github.com\/mrthinger\/wow-voiceover\/releases\/download\/v1.3.1\/AI_VoiceOverData_Vanilla-v1.0.0.zip unzip AI_VoiceOverData_Vanilla-v1.0.0.zip  # \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u043c \u0430\u0440\u0445\u0438\u0432, \u043c\u0430\u043b\u043e \u043b\u0438 \u0447\u0442\u043e-\u0442\u043e \u043d\u0430\u043a\u043e\u0441\u044f\u0447\u0438\u043c mv AI_VoiceOverData_Vanilla-v1.0.0.zip ~\/downloads<\/code><\/pre>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0442\u0430\u0449\u0438\u043c tts, \u044f \u0445\u043e\u0442\u0435\u043b \u0431\u044b\u043b\u043e \u0446\u0435\u043b\u0438\u043a\u043e\u043c \u0441\u043e\u0431\u0438\u0440\u0430\u0442\u044c \u0438\u0445 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439, \u043d\u043e \u043f\u043e\u0442\u043e\u043c \u043f\u043b\u044e\u043d\u0443\u043b \u0438 \u0443\u0432\u0438\u0434\u0435\u043b, \u0447\u0442\u043e \u0443 Codespaces \u0438\u0442\u0430\u043a \u0435\u0441\u0442\u044c docker, \u043a\u0430\u043a \u0431\u044b \u044f \u043d\u0435\u043d\u0430\u0432\u0438\u0434\u0435\u043b \u0438\u0445, \u0436\u0435\u043b\u0430\u043d\u0438\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u0441\u0442\u0440\u0435\u0435 \u043f\u043e\u0431\u0435\u0434\u0438\u043b.<\/p>\n<p>P.S. \u041f\u0440\u0438\u0447\u0435\u043c \u043c\u0435\u0441\u044f\u0446 \u043d\u0430\u0437\u0430\u0434 \u044f \u0431\u0430\u043b\u043e\u0432\u0430\u043b\u0441\u044f \u0441 tts, \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e \u043e\u043d \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f, \u043d\u043e \u043d\u0430 \u043f\u0435\u0442\u0443\u0445\u043e\u043d\u0435 \u043d\u0435 \u0432\u044b\u0448\u0435 3.10 \u0415\u041c\u041d\u0418\u041f.<\/p>\n<p>\u0422\u043e \u0435\u0441\u0442\u044c \u043e\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f \u0432 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0435, \u0437\u043d\u0430\u0447\u0438\u0442 \u043c\u043e\u0436\u043d\u043e \u0434\u043e\u043f\u0438\u0441\u0430\u0442\u044c \u0438 compose<\/p>\n<pre><code class=\"bash\">podman run --rm -it -p 5002:5002 --entrypoint \/bin\/bash ghcr.io\/coqui-ai\/tts-cpu<\/code><\/pre>\n<p>\u041f\u043e\u043b\u0443\u0447\u0438\u043b\u0430\u0441\u044c \u0432\u043e\u0442 \u0442\u0430\u043a\u0430\u044f \u0448\u043b\u044f\u043f\u0430<\/p>\n<pre><code class=\"yaml\">  tts:     image: ghcr.io\/coqui-ai\/tts-cpu     container_name: tts-server     ports:       - \"5002:5002\" <\/code><\/pre>\n<p>\u0417\u0430\u043f\u0443\u0441\u043a\u0430\u044e \u0435\u0451 \u0447\u0435\u0440\u0435\u0437 <code>podman-compose up tts<\/code>, \u0430 \u0442\u0430\u043c \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 \u043d\u0430 6.3GB \u0431\u0443\u0433\u0430\u0433\u0430<\/p>\n<p> \u0422\u0435\u043f\u0435\u0440\u044c \u0441\u0443\u0434\u044f \u043f\u043e \u0430\u0440\u0445\u0438\u0432\u0443 \u0442\u0430\u043c \u043a\u0430\u043a\u0430\u044f-\u0442\u043e \u0445\u0440\u0435\u043d\u044c \u0438 \u043d\u0430\u0434\u043e \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u0434 \u0430\u0434\u0434\u043e\u043d \u0441\u0432\u043e\u0438, \u043d\u0430\u0437\u043e\u0432\u0443 \u044d\u0442\u043e, \u043f\u0440\u0435-\u0444\u0430\u0439\u043b\u044b.<\/p>\n<pre><code class=\"bash\">cp .env.example .env # \u0443 \u043d\u0438\u0445 \u0442\u0430\u043c \u0443\u0436\u0435 \u0432 \u0440\u0435\u043f\u0435 \u043c\u0443\u0441\u043a\u0443\u043b docker compose up -d python cli-main.py init-db  python cli-main.py gen_lookup_tables --lang=ruRU<\/code><\/pre>\n<p>\u0432 \u043f\u0430\u043f\u043a\u0435 tts_cli \u0441\u043e\u0437\u0434\u0430\u044e tts_ai.py, \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043e\u043d\u043e \u043f\u043e\u0434\u0442\u044f\u043d\u0443\u043b\u043e \u043c\u043e\u0434\u0435\u043b\u044c<\/p>\n<pre><code class=\"python\">import torch from TTS.api import TTS  # Get device device = \"cpu\"  # List available ?TTS models print(TTS().list_models())  # Init TTS tts = TTS(\"tts_models\/multilingual\/multi-dataset\/xtts_v2\").to(device)  def getVoice(text, input_sound_path, output_sound_path, language):     tts.tts_to_file(text=text, speaker_wav=input_sound_path, language=language, file_path=output_sound_path) <\/code><\/pre>\n<p>\u0432 \u0441\u0430\u043c\u043e\u0439 \u043f\u0430\u043f\u043a\u0435 \u0432\u044b\u0437\u044b\u0432\u0430\u044e<\/p>\n<pre><code>python tts_ai.py<\/code><\/pre>\n<p>\u0438 \u0443\u0431\u0435\u0436\u0434\u0430\u044e\u0441\u044c, \u0447\u0442\u043e \u043e\u043d\u043e \u043d\u0435 \u0443\u043c\u0435\u0435\u0442 \u0442\u044f\u043d\u0443\u0442\u044c \u043c\u043e\u0434\u0435\u043b\u044c \u0441\u0430\u043c\u0430, \u0437\u043d\u0430\u0447\u0438\u0442 \u043d\u0430\u0434\u043e \u043a\u0430\u0447\u0430\u0442\u044c \u0440\u0435\u043f\u043e \u0438\u0437 <a href=\"https:\/\/huggingface.co\/coqui\/XTTS-v2\/tree\/main?clone=true\" rel=\"noopener noreferrer nofollow\">https:\/\/huggingface.co\/coqui\/XTTS-v2\/tree\/main?clone=true<\/a><\/p>\n<pre><code class=\"bash\">git lfs install git clone https:\/\/huggingface.co\/coqui\/XTTS-v2<\/code><\/pre>\n<p>\u0438 \u0432\u043e\u0442 \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u043b\u043e\u0441\u044c \u043c\u0435\u0441\u0442\u043e \u043d\u0430 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u043a\u0435<\/p>\n<figure class=\"full-width\"><\/figure>\n<p>\u043d\u043e \u043c\u044b \u0443\u0434\u0430\u043b\u0438\u043c \u0441\u043a\u0430\u0447\u0430\u043d\u043d\u044b\u0439 \u0430\u0440\u0445\u0438\u0432 sound-\u043e\u0432 \u0438 \u0432\u043e\u0442 + 1 \u0433\u0438\u0433\u0430\u0431\u0430\u0439\u0442\u0438\u043a:<\/p>\n<pre><code class=\"bash\">rm -rf ~\/downloads<\/code><\/pre>\n<p>\u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043b ncdu \u0438 \u043e\u0441\u0432\u043e\u0431\u043e\u0434\u0438\u043b \u043d\u0430 2.2GB<br \/>\u043f\u043e\u0442\u043e\u043c \u043f\u043e\u043d\u044f\u043b, \u0447\u0442\u043e \u0442\u0430\u043c numpy \u043d\u0435 \u0434\u0440\u0443\u0436\u0438\u0442 \u0441 \u0432\u0435\u0440\u0441\u0438\u0435\u0439 \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u0443 tts, \u043a\u043e\u0440\u043e\u0447\u0435 \u0434\u0430\u0443\u043d\u0433\u0440\u0435\u0439\u0434\u043d\u0443\u043b \u043f\u0430\u043a\u0435\u0442<\/p>\n<p>\u0432 \u0438\u0442\u043e\u0433\u0435 \u043c\u0435\u0441\u0442\u0430 \u043e\u043f\u044f\u0442\u044c \u043d\u0435 \u0445\u0432\u0430\u0442\u0438\u043b\u043e, \u043f\u043b\u044e\u043d\u0443\u043b \u0438 \u0430\u043f\u0433\u0440\u0435\u0439\u0434\u043d\u0443\u043b \u0442\u0430\u0447\u043a\u0443<\/p>\n<figure class=\"full-width\"><\/figure>\n<p>\u043f\u043e\u043a\u0430 \u043e\u043d\u0430 \u0442\u0430\u043c \u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043f\u043e\u0448\u0435\u043b \u0447\u0438\u0442\u0430\u0442\u044c \u043a\u0430\u043a \u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u0442\u044c \u0441\u0432\u043e\u0439 \u0430\u0434\u0434\u043e\u043d, \u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c, \u0447\u0442\u043e \u043d\u0430\u0434\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u043f\u043e \u0441\u0441\u044b\u043b\u043a\u0435 <a href=\"https:\/\/legacy.curseforge.com\/project\/create\" rel=\"noopener noreferrer nofollow\">https:\/\/legacy.curseforge.com\/project\/create<\/a> \u0438 \u0437\u0430\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0443\u044e \u0444\u043e\u0440\u043c\u0443, \u043e\u0442\u043b\u043e\u0436\u0443 \u043f\u043e\u043a\u0430 \u043d\u0430 \u043f\u043e\u0442\u043e\u043c, \u0442\u0430\u043a \u043a\u0430\u043a \u0442\u0430\u0447\u043a\u0430 \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0431\u0430\u043c\u043f\u043d\u0443\u043b\u0430\u0441\u044c<\/p>\n<figure class=\"full-width\"><\/figure>\n<p>\u0417\u0430\u043f\u043e\u043b\u043d\u044f\u044e \u043f\u043e\u0434 \u043a\u043e\u043f\u0438\u0440\u043a\u0443 \u0441 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0433\u043e, \u0432\u0435\u0437\u0434\u0435 \u0432\u0441\u0442\u0430\u0432\u043b\u044f\u044f Russian \u0438 \u0443\u0433\u043e\u0432\u0430\u0440\u0438\u0432\u0430\u044f \u043a\u0443\u043f\u0438\u0442\u044c \u043c\u043d\u0435 \u043a\u043e\u0444\u0435 \u0447\u0435\u0440\u0435\u0437 \u043f\u043e\u0434\u043f\u0438\u0441\u043a\u0443 \u043d\u0430 \u043c\u043e\u0439 \u043f\u0430\u0431\u043b\u0438\u043a \u043f\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u041f\u041e \u0432 \u0442\u0435\u043b\u0435\u0433\u0440\u0430\u043c <a href=\"https:\/\/t.me\/digitable_sub_bot\" rel=\"noopener noreferrer nofollow\">https:\/\/t.me\/digitable_sub_bot<\/a> \u043f\u043e \u0446\u0435\u043d\u0435 250\u0440 \u0432 \u043c\u0435\u0441\u044f\u0446)<\/p>\n<h2>\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430, \u0447\u0442\u043e TTS-\u043c\u043e\u0434\u0435\u043b\u044c \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442<\/h2>\n<p>\u0414\u0430\u043b\u044c\u0448\u0435 \u0442\u044b\u043a\u0430\u044e\u0441\u044c \u0432 tts \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0442\u0435\u043a\u0441\u0442\u0430 \u043a\u0432\u0435\u0441\u0442\u0430 \u0438 \u0432\u0445\u043e\u0434\u043d\u043e\u0439 \u0437\u0432\u0443\u043a\u043e\u0432\u043e\u0439 \u0434\u043e\u0440\u043e\u0436\u043a\u0438 \u0432\u044b\u0445\u043e\u0434\u043d\u0443\u044e \u0437\u0432\u0443\u043a\u043e\u0432\u0443\u044e \u0434\u043e\u0440\u043e\u0436\u043a\u0443<\/p>\n<pre><code class=\"bash\">tts \\ --model_name \"tts_models\/multilingual\/multi-dataset\/xtts_v2\" \\ --speaker_wav \/workspaces\/wow-voiceover\/translator\/assets\/wow-classic-en\/AI_VoiceOverData_Vanilla\/generated\/sounds\/quests\/2-complete.wav \\ --out_path \/workspaces\/wow-voiceover\/translator\/assets\/wow-classic-ru\/AI_VoiceOverData_Vanilla\/generated\/sounds\/quests\/2-complete.wav \\ --text \"\u041c\u043e\u0433\u0443\u0447\u0438\u0439 \u0433\u0438\u043f\u043f\u043e\u0433\u0440\u0438\u0444 \u041e\u0441\u0442\u0440\u043e\u043a\u043e\u0433\u043e\u0442\u044c \u0431\u044b\u043b \u0443\u0431\u0438\u0442, \u0438 \u043a\u043e\u0433\u043e\u0442\u044c \u044d\u0442\u043e\u0439 \u0441\u0432\u0438\u0440\u0435\u043f\u043e\u0439 \u0442\u0432\u0430\u0440\u0438 \u2013 \u0441\u0432\u0438\u0434\u0435\u0442\u0435\u043b\u044c\u0441\u0442\u0432\u043e \u0432\u0430\u0448\u0435\u0439 \u043f\u043e\u0431\u0435\u0434\u044b. \u0421\u0435\u043d\u0430\u043d\u0438 \u0413\u0440\u043e\u043c\u043e\u0441\u0435\u0440\u0434 \u043d\u0430 \u0437\u0430\u0441\u0442\u0430\u0432\u0435 \u0420\u0430\u0441\u0449\u0435\u043f\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0414\u0440\u0435\u0432\u0430 \u043d\u0435\u0441\u043e\u043c\u043d\u0435\u043d\u043d\u043e \u043f\u043e\u0436\u0435\u043b\u0430\u0435\u0442 \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u044d\u0442\u043e\u0442 \u0442\u0440\u043e\u0444\u0435\u0439 \u2013 \u0434\u043e\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c\u0441\u0442\u0432\u043e \u0432\u0430\u0448\u0438\u0445 \u0434\u0435\u044f\u043d\u0438\u0439.\" \\ --language_idx 'ru' <\/code><\/pre>\n<p>\u041d\u0430 \u0432\u044b\u0445\u043e\u0434\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u044e, \u043f\u0440\u0438\u0447\u0435\u043c \u0437\u0432\u0443\u043a\u043e\u0432\u0430\u044f \u0434\u043e\u0440\u043e\u0436\u043a\u0430 \u043f\u0443\u0441\u0442\u044c \u0438 \u043c\u0435\u0441\u0442\u0430\u043c\u0438 \u0443\u0449\u0435\u0440\u0431\u043d\u0430\u044f, \u043d\u043e \u0432 \u0446\u0435\u043b\u043e\u043c \u0433\u043e\u043b\u043e\u0441 \u0441\u043a\u043b\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043b\u0441\u044f \u0431\u043e\u043b\u0435\u0435 \u0447\u0435\u043c.<\/p>\n<figure class=\"full-width\"><\/figure>\n<h2>\u041d\u0430\u0447\u0438\u043d\u0430\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0439 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440<\/h2>\n<p>\u0422\u0430\u043a-\u0441, \u0442\u0435\u043f\u0435\u0440\u044c \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043c<\/p>\n<figure class=\"full-width\"><\/figure>\n<p>\u0412\u0438\u0434\u0430\u0442\u044c \u0433\u0434\u0435-\u0442\u043e \u0432 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0435 \u044f\u0437\u044b\u043a\u0430 \u043d\u0430\u043a\u043e\u0441\u044f\u0447\u0438\u043b \u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u0442\u0441\u044f \u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u0438\u0439<\/p>\n<pre><code>python cli-main.py gen_lookup_tables --lang=ruRU<\/code><\/pre>\n<p>\u0421\u0442\u0440\u0430\u0448\u043d\u043e, \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u0447\u0442\u043e 17\u043a \u0430\u0443\u0434\u0438\u043e\u0444\u0430\u0439\u043b\u043e\u0432 \u0431\u0435\u0434\u043d\u044b\u0439 Codespace \u0431\u0443\u0434\u0435\u0442 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c, \u0441 \u0434\u0440\u0443\u0433\u043e\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u044b, \u0430 \u0437\u0430\u0447\u0435\u043c \u044f \u0442\u043e\u0433\u0434\u0430 \u0437\u0430 \u043f\u043e\u0434\u043f\u0438\u0441\u043a\u0443 \u043f\u043b\u0430\u0447\u0443?<\/p>\n<p>\u041e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u0447\u0442\u043e \u044d\u0442\u043e\u0442 \u0432\u0441\u0440\u0430\u0442\u044b\u0439 gen_lookup_tables \u0441\u043e\u0437\u0434\u0430\u0441\u0442 \u0432 output \u043f\u0430\u043f\u043a\u0435 \u043d\u0443\u0436\u043d\u044b\u0435 \u043c\u043d\u0435 \u0442\u0435\u043a\u0441\u0442\u044b \u043a\u0432\u0435\u0441\u0442\u043e\u0432, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0441\u0432\u0430\u043f\u0430\u044e \u043c\u0435\u0441\u0442\u0430\u043c\u0438 \u0442\u0435\u043a\u0441\u0442\u044b \u043a\u0432\u0435\u0441\u0442\u043e\u0432 \u0432 input \u043f\u0430\u043f\u043a\u0443 \u043e\u0431\u044b\u0447\u043d\u044b\u043c \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u043c.<\/p>\n<p>\u0427\u0442\u043e \u0437\u0430\u0431\u0430\u0432\u043d\u043e &#8212; \u044d\u0442\u043e \u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u0438\u0439 \u0442\u0435\u043a\u0441\u0442 \u0441 \u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u0438\u043c \u0433\u043e\u043b\u043e\u0441\u043e\u043c, \u043d\u043e \u0432 \u0440\u0443\u0441\u0441\u043a\u0438\u0439 \u0433\u043e\u043b\u043e\u0441, \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u0440\u0443\u043d\u0433\u043b\u0438\u0448 \u0432 \u0447\u0438\u0441\u0442\u043e\u043c \u0432\u0438\u0434\u0435 \u043e\u0442 \u043d\u0435\u0439\u0440\u043e\u0441\u0435\u0442\u0438, \u0445\u043e\u0442\u044c \u0432 \u043a\u0438\u043d\u043e \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0439, \u043d\u043e \u0441 \u044d\u0442\u0438\u043c \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u044b \u0431\u0443\u0434\u0443\u0442 \u043f\u043e\u0442\u043e\u043c<\/p>\n<p><strong>\u041f\u0440\u0438\u043c\u0435\u0440 &#8212; <\/strong><a href=\"https:\/\/raw.githubusercontent.com\/the-homeless-god\/wow-voiceover\/master\/assets\/video\/10-complete.mp3\" rel=\"noopener noreferrer nofollow\">https:\/\/raw.githubusercontent.com\/the-homeless-god\/wow-voiceover\/master\/assets\/video\/10-complete.mp3<\/a><\/p>\n<p>\u0418 \u0432\u043e\u0442 \u043e\u0448\u0438\u0431\u043a\u0438 \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438:<\/p>\n<figure class=\"full-width\"><\/figure>\n<h2>\u0423\u043b\u0443\u0447\u0448\u0430\u0435\u043c \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438<\/h2>\n<p>\u041e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u043d\u0435 \u0432\u0441\u0435 \u043a\u0432\u0435\u0441\u0442\u044b \u043f\u0435\u0440\u0435\u0432\u0435\u0434\u0435\u043d\u044b, \u0430 \u0437\u043d\u0430\u0447\u0438\u0442 \u0442\u043e\u043f\u0430\u0435\u043c \u0441\u044e\u0434\u0430 <a href=\"https:\/\/www.hiveworkshop.com\/threads\/warcraft-iii-medivh-soundset.337074\/\" rel=\"noopener noreferrer nofollow\">https:\/\/www.hiveworkshop.com\/threads\/warcraft-iii-medivh-soundset.337074\/<\/a> \u0438 \u0434\u043e\u0441\u0442\u0430\u0435\u043c \u0433\u043e\u043b\u043e\u0441 \u041c\u0435\u0434\u0438\u0432\u0430, \u0447\u0442\u043e\u0431\u044b \u043a\u0430\u043a \u0432 \u0442\u0440\u0435\u0442\u044c\u0435\u043c \u0432\u0430\u0440\u043a\u0440\u0430\u0444\u0442\u0435 \u0437\u0430\u043a\u0430\u0434\u0440\u0430\u0432\u044b\u0439 \u0433\u043e\u043b\u043e\u0441 \u0431\u044b\u043b \u0434\u043b\u044f \u0441\u043b\u0443\u0447\u0430\u0435\u0432, \u043a\u043e\u0433\u0434\u0430 \u0433\u043e\u043b\u043e\u0441\u0430 \u043d\u0435\u0442<\/p>\n<p>\u041d\u043e \u0442\u0430\u043c \u0432\u0441\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u043a\u043e\u0440\u043e\u0442\u043a\u0438\u0435, \u043d\u0430\u0448\u0435\u043b \u043d\u0430 YouTube <a href=\"https:\/\/www.youtube.com\/watch?v=3svAOHX7FLI\" rel=\"noopener noreferrer nofollow\">https:\/\/www.youtube.com\/watch?v=3svAOHX7FLI<\/a>, \u0441\u0435\u0439\u0447\u0430\u0441 \u0441\u0442\u0430\u0449\u0438\u043c \u0432\u0438\u0434\u0435\u043e\u0444\u0430\u0439\u043b \u0438 \u0441 ffmpeg \u0434\u043e\u0441\u0442\u0430\u043d\u0435\u043c \u043e\u0442\u0442\u0443\u0434\u0430 mp3.<br \/>\u041f\u043e\u043a\u0430 \u0442\u0430\u0449\u0438\u043b \u0444\u0430\u0439\u043b \u0447\u0435\u0440\u0435\u0437 ssyoutube \u0442\u0430\u043c \u0436\u0435 \u0441\u043a\u0430\u0447\u0430\u043b mp4 \u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u043b \u043a\u0430\u043a mp3. \u0422\u0430\u043a \u0447\u0442\u043e \u043d\u0435 \u0432 \u044d\u0442\u043e\u0442 \u0440\u0430\u0437, ffmpeg.<\/p>\n<p>\u041c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u0442\u0443\u043f\u0438\u0442\u044c \u043a\u0440\u0443\u0447\u0435 \u0438 \u043e\u0437\u0432\u0443\u0447\u0438\u0442\u044c \u0432\u0441\u0435 \u043a\u0432\u0435\u0441\u0442\u044b \u043c\u043e\u0438\u043c \u0433\u043e\u043b\u043e\u0441\u043e\u043c, \u043d\u043e \u044d\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u0441\u043b\u0438\u0448\u043a\u043e\u043c<\/p>\n<pre><code class=\"python\">  def tts(self, text: str, inputName: str, outputName: str, output_subfolder: str, language: str, forceGen: bool = False):         result = \"\"         outpath = os.path.join(SOUND_OUTPUT_FOLDER, output_subfolder, outputName)         inpath = os.path.join(SOUND_INPUT_FOLDER, output_subfolder, inputName)          if os.path.isfile(outpath) and forceGen is not True:             result = \"duplicate generation, skipping\"             return          # \u0432\u043e\u0442 \u0442\u0443\u0442 \u0434\u043e\u0431\u0430\u0432\u0438\u043b \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443, \u0447\u0442\u043e \u0435\u0441\u043b\u0438 input-sample \u043a\u0432\u0435\u0441\u0442\u0430 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442, \u0442\u043e \u043f\u0443\u0441\u0442\u044c \u0431\u0435\u0440\u0435\u0442 \u0433\u043e\u043b\u043e\u0441 \u041c\u0435\u0434\u0438\u0432\u0430         if os.path.isfile(inpath) is False:             inpath = DEFAULT_VOICE             return              self.convert(text, inpath, outpath, language)          result = f\"Audio file saved successfully!: {outpath}\"          return result <\/code><\/pre>\n<h2>\u041e\u0446\u0435\u043d\u0438\u0432\u0430\u0435\u043c \u0437\u0430\u0442\u0440\u0430\u0442\u044b<\/h2>\n<p>\u041d\u043e \u0447\u0442\u043e\u0431\u044b \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c 19784 \u0444\u0430\u0439\u043b\u0430 \u043f\u043e 30 \u0441\u0435\u043a\u0443\u043d\u0434 \u043a\u0430\u0436\u0434\u044b\u0439 \u043d\u0430\u0434\u043e 164 \u0447\u0430\u0441\u0430 \u0432\u0440\u043e\u0434\u0435 \u0431\u044b<br \/>  ((19784 * 30) \/ 60) \/ 60 \/ 24 &#8212; \u044d\u0442\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e 7 \u0434\u043d\u0435\u0439 \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438<\/p>\n<p>\u0410 \u0435\u0441\u043b\u0438<\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-377599","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/377599","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=377599"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/377599\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=377599"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=377599"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=377599"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}