{"id":365848,"date":"2024-05-21T02:46:47","date_gmt":"2024-05-21T02:46:47","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=365848"},"modified":"-0001-11-30T00:00:00","modified_gmt":"2024-05-21T02:46:47","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=365848","title":{"rendered":"<span>\u041a\u0430\u043a \u043f\u0435\u0440\u0435\u0432\u0435\u0441\u0442\u0438 \u0438\u0433\u0440\u0443 &#8216;The Lamplighters League&#8217;<\/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-1\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<div class=\"oembed\">\n<div class=\"tm-iframe_temp\" data-src=\"https:\/\/embedd.srv.habr.com\/iframe\/65ac00a2a5e031d47d36554f\" data-style=\"\" id=\"65ac00a2a5e031d47d36554f\" width=\"\"><\/div>\n<\/div>\n<p>  \u041d\u0430 \u0434\u0430\u043d\u043d\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c \u043f\u0435\u0440\u0435\u0432\u043e\u0434 .wem \u0444\u0430\u0439\u043b\u043e\u0432 \u0430\u0443\u0434\u0438\u043e \u043e\u0434\u043d\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430 (\u0430\u043d\u0433\u043b.) \u043d\u0430 \u0434\u0440\u0443\u0433\u043e\u0439 \u044f\u0437\u044b\u043a (\u0440\u0443\u0441\u0441\u043a\u0438\u0439) \u0441 \u043f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u0443\u043f\u0430\u043a\u043e\u0432\u043a\u043e\u0439 \u0432 .wem \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0432 \u0438\u0433\u0440\u0435. \u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0431\u0443\u0434\u0443\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f python, \u043d\u0435\u0439\u0440\u043e\u0441\u0435\u0442\u0438, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 Wwise. \u0418\u0437 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0433\u043e \u2014 \u0442\u0430\u043a\u0436\u0435 \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0441\u0435\u0442\u044c, \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u044e\u0449\u0430\u044f \u043f\u043e\u043b (gender) \u0433\u043e\u0432\u043e\u0440\u044f\u0449\u0435\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043f\u0435\u0440\u0435\u0432\u043e\u0434 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0441\u044f \u0434\u0432\u0443\u0445\u0433\u043e\u043b\u043e\u0441\u044b\u043c.<br \/>  <a name=\"habracut\"><\/a>  <\/p>\n<h3>\u0410\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u0440\u0430\u0431\u043e\u0442\u044b \u0431\u0443\u0434\u0435\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c<\/h3>\n<p>  <\/p>\n<ul>\n<li>\u0440\u0430\u0441\u043f\u0430\u043a\u043e\u0432\u0430\u0442\u044c .wem \u0444\u0430\u0439\u043b\u044b \u0438\u0433\u0440\u044b \u0432 .wav<\/li>\n<li>\u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c .wav \u0432 .txt \u043d\u0430 \u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u043e\u043c \u044f\u0437\u044b\u043a\u0435<\/li>\n<li>\u0438\u0437 \u0430\u043d\u0433\u043b. .wav \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u043f\u043e\u043b \u0433\u043e\u0432\u043e\u0440\u044f\u0449\u0435\u0433\u043e \u0438 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0444\u0430\u0439\u043b-\u0442\u0430\u0431\u043b\u0438\u0446\u0443<\/li>\n<li>\u043f\u0435\u0440\u0435\u0432\u0435\u0441\u0442\u0438 \u0430\u043d\u0433\u043b. .txt \u0432 .txt \u043d\u0430 \u0440\u0443\u0441\u0441\u043a\u043e\u043c<\/li>\n<li>\u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c .txt \u043d\u0430 \u0440\u0443\u0441. \u0432 .wav \u043d\u0430 \u0440\u0443\u0441.<\/li>\n<li>\u0437\u0430\u043f\u0430\u043a\u043e\u0432\u0430\u0442\u044c \u0433\u043e\u0442\u043e\u0432\u044b\u0435 .wav \u043e\u0431\u0440\u0430\u0442\u043d\u043e \u0432 .wem <\/li>\n<\/ul>\n<p>  *- \u043d\u0430\u0439\u0442\u0438 \u043f\u0443\u0441\u0442\u044b\u0435 \u0444\u0430\u0439\u043b\u044b c len(text)==0 \u0438 \u043f\u0435\u0440\u0435\u043d\u0435\u0441\u0442\u0438 \u0438\u0445 \u00ab\u043a\u0430\u043a \u0435\u0441\u0442\u044c\u00bb, \u0442.\u043a. \u044d\u0442\u043e \u0444\u0430\u0439\u043b\u044b \u0441 \u0432\u043e\u043f\u043b\u044f\u043c\u0438, \u0448\u0443\u043c\u0430\u043c\u0438 \u0438 \u0442.\u043f. <br \/>  \u0412\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043f\u0440\u043e\u0441\u0442\u043e, \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435.<\/p>\n<h3>\u0420\u0430\u0441\u043f\u0430\u043a\u043e\u0432\u0430\u0442\u044c .wem \u0444\u0430\u0439\u043b\u044b \u0438\u0433\u0440\u044b \u0432 .wav<\/h3>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/webt\/qq\/2r\/nm\/qq2rnmicqdasbndfjnivszc9xum.jpeg\" data-src=\"https:\/\/habrastorage.org\/webt\/qq\/2r\/nm\/qq2rnmicqdasbndfjnivszc9xum.jpeg\" data-blurred=\"true\"\/><br \/>  \u041f\u043e\u0434\u0430\u0432\u043b\u044f\u044e\u0449\u0435\u0435 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u0430\u0443\u0434\u0438\u043e\u0444\u0430\u0439\u043b\u043e\u0432 \u0438\u0433\u0440\u044b \u0443\u043f\u0430\u043a\u043e\u0432\u0430\u043d\u044b \u0432 \u0444\u043e\u0440\u043c\u0430\u0442 wem \u0438 \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u0432 \u043f\u0430\u043f\u043a\u0435 \u0441 \u0438\u0433\u0440\u043e\u0439.<br \/>  \u041f\u043e\u044d\u0442\u043e\u043c\u0443, \u043f\u0435\u0440\u0432\u044b\u043c \u0448\u0430\u0433\u043e\u043c \u0431\u0443\u0434\u0435\u0442 \u0438\u0445 \u0440\u0430\u0441\u043f\u0430\u043a\u043e\u0432\u043a\u0430 \u0434\u043b\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438.<\/p>\n<p>  \u0418 \u0437\u0434\u0435\u0441\u044c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0443\u043f\u043e\u043c\u044f\u043d\u0443\u0442\u044c <a href=\"https:\/\/www.gaminghouse.community\/en\/guides-tutorials-1003\/how-to-play-convert-wem-files-ogg-mp3-67#toc-3\" rel=\"nofollow noopener noreferrer\">\u0441\u0442\u0430\u0442\u044c\u044e<\/a>, \u0442.\u043a. \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u043e\u0431\u044a\u0435\u043c \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u0431\u044b\u043b \u043f\u043e\u043b\u0443\u0447\u0435\u043d \u0438\u0437 \u043d\u0435\u0435.<\/p>\n<p>  \u041d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0441\u043a\u0430\u0447\u0430\u0442\u044c \u0441\u0430\u043c\u0443 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443 \u043f\u043e\u0434 windows \u2014 <a href=\"https:\/\/github.com\/vgmstream\/vgmstream\/releases\" rel=\"nofollow noopener noreferrer\">vgmstream-win64<\/a><br \/>  \u0421\u043e\u0437\u0434\u0430\u0442\u044c \u0432 \u043d\u0435\u0439 \u0434\u0432\u0435 \u043f\u0430\u043f\u043a\u0438: input, output \u0438 \u043f\u043e\u043b\u043e\u0436\u0438\u0442\u044c \u0432 \u043f\u0435\u0440\u0432\u0443\u044e \u0432\u0441\u0435 .wem \u0444\u0430\u0439\u043b\u044b \u0438\u0437 \u043f\u0430\u043f\u043a\u0438 \u0438\u0433\u0440\u044b \u0438\u0437 <\/p>\n<pre><code class=\"python\">The Lamplighters League\\LamplightersLeague_Data\\StreamingAssets\\Audio\\GeneratedSoundBanks\\Windows\\English(US).<\/code><\/pre>\n<p>  \u0414\u0430\u043b\u0435\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0432 \u043f\u0430\u043f\u043a\u0435 \u0441 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043e\u0439 .bat \u0444\u0430\u0439\u043b, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0432\u0441\u0435 \u0444\u0430\u0439\u043b\u044b \u0432 \u043f\u0430\u043f\u043a\u0435 input, \u0442.\u043a. \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u0438\u043d \u0444\u0430\u0439\u043b.<\/p>\n<p>  \u0421\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 .bat \u0444\u0430\u0439\u043b\u0430 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 ):<\/p>\n<pre><code class=\"python\">for %%f in (input\/*.wem) do \".\/vgmstream-cli.exe\" -o output\/%%f.wav input\/%%f pause<\/code><\/pre>\n<p>  \u0422\u0430\u043a \u043a\u0430\u043a \u0444\u0430\u0439\u043b\u043e\u0432 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043c\u043d\u043e\u0433\u043e (~15000), \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0437\u0430\u0439\u043c\u0435\u0442 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0432\u0440\u0435\u043c\u044f.<br \/>  \u041d\u0430 \u0432\u044b\u0445\u043e\u0434\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u0441\u044f .wav \u0444\u0430\u0439\u043b\u044b:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/webt\/fl\/ur\/mv\/flurmvxaxpax2kj8gpfn4ggurky.jpeg\" data-src=\"https:\/\/habrastorage.org\/webt\/fl\/ur\/mv\/flurmvxaxpax2kj8gpfn4ggurky.jpeg\" data-blurred=\"true\"\/><\/p>\n<p>  \u0421\u0440\u0430\u0437\u0443 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043e\u0433\u043e\u0432\u043e\u0440\u0438\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u0437\u0430\u043f\u0430\u043a\u043e\u0432\u0430\u0442\u044c \u043e\u0431\u0440\u0430\u0442\u043d\u043e \u0432 .wem \u044d\u0442\u043e\u0439 \u0436\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043e\u0439 \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f. <\/p>\n<p>  \u0414\u0432\u0438\u0436\u0435\u043c\u0441\u044f \u0434\u0430\u043b\u044c\u0448\u0435.<\/p>\n<h3>\u041a\u043e\u043d\u0432\u0435\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c .wav \u0432 .txt \u043d\u0430 \u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u043e\u043c \u044f\u0437\u044b\u043a\u0435<\/h3>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/webt\/ad\/-f\/zp\/ad-fzpakezn5pcqecibobamheze.jpeg\" data-src=\"https:\/\/habrastorage.org\/webt\/ad\/-f\/zp\/ad-fzpakezn5pcqecibobamheze.jpeg\" data-blurred=\"true\"\/><\/p>\n<p>  \u0412 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 <a href=\"https:\/\/habr.com\/ru\/articles\/778510\/\">\u0441\u0442\u0430\u0442\u044c\u0435<\/a> \u043f\u0440\u0438 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0435 \u0438\u0437 \u0430\u043d\u0433\u043b. wav \u0432 \u0430\u043d\u0433\u043b. .txt \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0430\u0441\u044c vosk-model-en-us-0.22-lgraph, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043d\u0435\u043f\u043b\u043e\u0445\u043e \u0441\u043f\u0440\u0430\u0432\u0438\u043b\u0430\u0441\u044c \u0441 \u0437\u0430\u0434\u0430\u0447\u0435\u0439.<\/p>\n<p>  \u0412 \u044d\u0442\u043e\u0442 \u0440\u0430\u0437 \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u0434\u0440\u0443\u0433\u043e\u0439 \u00ab\u043f\u0430\u043a\u0435\u0442 \u043f\u043e\u043c\u043e\u0449\u0438\u00bb \u2014 <a href=\"https:\/\/github.com\/openai\/whisper\" rel=\"nofollow noopener noreferrer\">wisper <\/a><br \/>  \u0420\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043d\u0435 \u0445\u0443\u0436\u0435, \u0438, \u043f\u043e \u043e\u0449\u0443\u0449\u0435\u043d\u0438\u044f\u043c, \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u0435\u0439.<\/p>\n<p>  \u041f\u0440\u043e\u043f\u0443\u0441\u0442\u0438\u043c \u0447\u0435\u0440\u0435\u0437 \u043a\u043e\u0434 \u0432\u0441\u0435 \u0444\u0430\u0439\u043b\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0440\u0430\u043d\u0435\u0435 \u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043b\u0438:<\/p>\n<pre><code class=\"python\">import whisper  ##model = whisper.load_model(\"base\") ##result = model.transcribe(\"59364.wem.wav\") ##print(result[\"text\"])   import torch, time, whisper, os from glob import glob  device = torch.device('cuda') model = whisper.load_model(\"base\") ##model = whisper.load_model(name='base', device=device)  ## def job(file): ##    audio = whisper.load_audio(file, sr=16000)     result = model.transcribe(file,language='en', task='transcribe', fp16=True)     #print(result['text'])     a=file.split('\\\\')[1].split('.')[0]         with open (f\"{a}.txt\",\"a\") as f:         f.write(result['text']) ##    print(datetime.now()- start)  import multiprocessing def main():     p = multiprocessing.Pool(8)     for f in glob(r'.\\*.wav'):         #job(f)         #print(f)         #print('work on:',f.split('\\\\')[1])         p.apply_async(job, [f])       p.close()     p.join()   if __name__ == '__main__':     main() <\/code><\/pre>\n<p>  \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f base \u043c\u043e\u0434\u0435\u043b\u044c, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u0430 \u043f\u0440\u0438 \u0441\u0442\u0430\u0440\u0442\u0435 \u0441\u043a\u0440\u0438\u043f\u0442\u0430, cuda. \u0415\u0441\u043b\u0438 \u043d\u0435\u0442 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u043e\u0439 cuda, \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u044c cpu.<\/p>\n<p>  \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u043c \u0440\u0430\u0431\u043e\u0442\u044b \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0431\u0443\u0434\u0443\u0442 \u0432\u0441\u0435 \u0442\u0435 \u0436\u0435 ~15000 \u0444\u0430\u0439\u043b\u043e\u0432, \u043d\u043e \u0443\u0436\u0435 \u0441 \u0430\u043d\u0433\u043b. \u0442\u0435\u043a\u0441\u0442\u043e\u043c:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/webt\/sr\/j9\/sp\/srj9splfwhih3fbkw0r5dgcewjw.jpeg\" data-src=\"https:\/\/habrastorage.org\/webt\/sr\/j9\/sp\/srj9splfwhih3fbkw0r5dgcewjw.jpeg\" data-blurred=\"true\"\/><\/p>\n<p>  \u041d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u043e\u043c\u043d\u0438\u0442\u044c \u043f\u0440\u043e \u043f\u0443\u0441\u0442\u044b\u0435 \u0444\u0430\u0439\u043b\u044b \u0438 \u0444\u0430\u0439\u043b\u044b \u0441 \u0430\u043d\u043e\u043c\u0430\u043b\u0438\u044f\u043c\u0438 \u0432 \u0442\u0435\u043a\u0441\u0442\u0435. \u041f\u0440\u0438\u043c\u0435\u0440 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0445:<\/p>\n<pre><code class=\"python\"> We're going to be going to be going to be going to be going to be going to be going to be going to be going to be going to be going ... <\/code><\/pre>\n<p>  \u0422\u0430\u043a \u043f\u0435\u0440\u0435\u0432\u0435\u0434\u0435\u043d \u043c\u043e\u0434\u0435\u043b\u044c\u044e \u0441\u0432\u0438\u0441\u0442 \u2014 <a href=\"https:\/\/drive.google.com\/file\/d\/13I7x73DMrrR_FNCxOyv6XhO7lxg2ehMc\/view?usp=drive_link\" rel=\"nofollow noopener noreferrer\">wav<\/a><\/p>\n<p>  Wav-\u0444\u0430\u0439\u043b\u044b \u043d\u0430 \u0430\u043d\u0433\u043b., \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0442 \u043f\u043e \u0438\u043c\u0435\u043d\u0430\u043c \u043f\u0443\u0441\u0442\u044b\u043c \u0444\u0430\u0439\u043b\u0430\u043c .txt \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u0435\u0440\u0435\u043d\u0435\u0441\u0442\u0438 \u00ab\u043a\u0430\u043a \u0435\u0441\u0442\u044c\u00bb. <\/p>\n<p>  \u041d\u0430\u0439\u0442\u0438 \u043f\u0443\u0441\u0442\u044b\u0435 \u0444\u0430\u0439\u043b\u044b \u043c\u043e\u0436\u043d\u043e, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0442\u0430\u043a:<\/p>\n<pre><code class=\"python\">from glob import glob for f in glob(r'.\/*.txt'):     with open (f) as f2:         text=f2.read()     if len(text)==0:         print(f,text)<\/code><\/pre>\n<p>  <\/p>\n<h3>\u0418\u0437 \u0430\u043d\u0433\u043b. .wav \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u043f\u043e\u043b \u0433\u043e\u0432\u043e\u0440\u044f\u0449\u0435\u0433\u043e \u0438 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0444\u0430\u0439\u043b-\u0442\u0430\u0431\u043b\u0438\u0446\u0443<\/h3>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/webt\/oh\/kg\/-p\/ohkg-pncgdus9hqxudf08rja0xo.jpeg\" data-src=\"https:\/\/habrastorage.org\/webt\/oh\/kg\/-p\/ohkg-pncgdus9hqxudf08rja0xo.jpeg\" data-blurred=\"true\"\/><\/p>\n<p>  \u0427\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0441\u044f \u0434\u0432\u0443\u0445\u0433\u043e\u043b\u043e\u0441\u044b\u0439 \u043f\u0435\u0440\u0435\u0432\u043e\u0434 \u0438 \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u0436\u0438 \u043d\u0435 \u0433\u043e\u0432\u043e\u0440\u0438\u043b\u0438 \u0433\u043e\u043b\u043e\u0441\u0430\u043c\u0438 \u0436\u0435\u043d\u0449\u0438\u043d \u0437\u0430 \u043c\u0443\u0436\u0447\u0438\u043d \u0438 \u043d\u0430\u043e\u0431\u043e\u0440\u043e\u0442, \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u043c \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e wav \u043d\u0430 \u0430\u043d\u0433\u043b. \u043f\u043e\u043b \u0433\u043e\u0432\u043e\u0440\u044f\u0449\u0435\u0433\u043e.<\/p>\n<p>  \u0412 \u0441\u0430\u043c\u043e\u0439 \u0438\u0433\u0440\u0435 \u0431\u043e\u043b\u044c\u0448\u0435 \u0434\u0432\u0443\u0445 \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u0436\u0435\u0439, \u043d\u043e, \u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435, \u044d\u0442\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0435 \u0443\u043f\u0440\u043e\u0449\u0435\u043d\u0438\u0435.<\/p>\n<p>  \u0414\u043b\u044f gender-recognition \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u0441\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c <a href=\"https:\/\/github.com\/SuperKogito\/Voice-based-gender-recognition\" rel=\"nofollow noopener noreferrer\">\u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0435\u043c<\/a>.<br \/>  \u0421 \u0434\u0430\u043d\u043d\u044b\u043c \u043f\u0430\u043a\u0435\u0442\u043e\u043c \u0431\u0443\u0434\u0443\u0442 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u0435 \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u043f\u0440\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0435, \u043f\u043e\u044d\u0442\u043e\u043c\u0443, \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f \u0432\u0437\u0433\u043b\u044f\u043d\u0443\u0442\u044c \u043d\u0430 <a href=\"https:\/\/github.com\/SuperKogito\/Voice-based-gender-recognition\/issues\/16\" rel=\"nofollow noopener noreferrer\">issue<\/a>, \u0447\u0442\u043e\u0431\u044b \u00ab\u0437\u0430\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c\u00bb, \u0435\u0441\u043b\u0438 \u043d\u0435 \u0441\u0442\u0430\u0432\u0438\u0442\u0435 \u043f\u0430\u043a\u0435\u0442 \u0438\u0437 requirements.txt.<\/p>\n<p>  \u041f\u043e\u043c\u0435\u0441\u0442\u0438\u043c \u0432 \u043f\u0430\u043f\u043a\u0438 males \u0438 females \u0430\u043d\u0433\u043b. wav \u0444\u0430\u0439\u043b\u044b \u043d\u0435 \u0432\u0430\u0436\u043d\u043e \u0432 \u043a\u0430\u043a\u043e\u0439 \u043f\u0440\u043e\u043f\u043e\u0440\u0446\u0438\u0438, \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0435 \u043d\u0443\u0436\u043d\u044b \u043e\u0431\u0435 \u043f\u0430\u043f\u043a\u0438 (\u043f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f \u0447\u0442\u043e \u0432\u044b \u0440\u0430\u043d\u0435\u0435 \u043e\u0431\u0443\u0447\u0438\u043b\u0438 \u043c\u043e\u0434\u0435\u043b\u0438 gmm \u0441\u043e\u0433\u043b\u0430\u0441\u043d\u043e \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f\u043c \u0432 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438). \u0422\u0430\u043a\u0436\u0435 GenderIdentifier.py \u043f\u0435\u0440\u0435\u0434 \u0437\u0430\u043f\u0443\u0441\u043a\u043e\u043c \u0432 Voice-based-gender-recognition\\Code \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043f\u043e\u043f\u0440\u0430\u0432\u0438\u043c:<\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">GenderIdentifier.py<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"python\"> import os import pickle import warnings import numpy as np from FeaturesExtractor import FeaturesExtractor  warnings.filterwarnings(\"ignore\")   class GenderIdentifier:      def __init__(self, females_files_path, males_files_path, females_model_path, males_model_path):         self.females_training_path = females_files_path         self.males_training_path   = males_files_path         self.error                 = 0         self.total_sample          = 0         self.features_extractor    = FeaturesExtractor()         # load models         self.females_gmm = pickle.load(open(females_model_path, 'rb'))         self.males_gmm   = pickle.load(open(males_model_path, 'rb'))      def process(self):         files = self.get_file_paths(self.females_training_path, self.males_training_path)         # read the test directory and get the list of test audio files         for file in files:             self.total_sample += 1             #print(\"%10s %8s %1s\" % (\"--> TESTING\", \":\", os.path.basename(file)))                          vector = self.features_extractor.extract_features(file)             winner = self.identify_gender(vector)             #print(file)             expected_gender = file.split(\"\\\\\")[1][:-1]             #expected_gender = file.split(\"\/\")[1][:-1]              #print(\"%10s %6s %1s\" % (\"+ EXPECTATION\",\":\", expected_gender))             #print(\"%10s %3s %1s\" %  (\"+ IDENTIFICATION\", \":\", winner))             #print(os.path.basename(file),winner)             with open ('out.txt','a') as f:                 f.write(f'{os.path.basename(file)},{winner}\\n')              if winner != expected_gender: self.error += 1             #print(\"----------------------------------------------------\")          #accuracy     = ( float(self.total_sample - self.error) \/ float(self.total_sample) ) * 100         #accuracy_msg = \"*** Accuracy = \" + str(round(accuracy, 3)) + \"% ***\"         #print(accuracy_msg)      def get_file_paths(self, females_training_path, males_training_path):         # get file paths         females = [ os.path.join(females_training_path, f) for f in os.listdir(females_training_path) ]         males   = [ os.path.join(males_training_path, f) for f in os.listdir(males_training_path) ]         files   = females + males         return files      def identify_gender(self, vector):         # female hypothesis scoring         is_female_scores         = np.array(self.females_gmm.score(vector))         is_female_log_likelihood = is_female_scores.sum()         # male hypothesis scoring         is_male_scores         = np.array(self.males_gmm.score(vector))         is_male_log_likelihood = is_male_scores.sum()          #print(\"%10s %5s %1s\" % (\"+ FEMALE SCORE\",\":\", str(round(is_female_log_likelihood, 3))))         #print(\"%10s %7s %1s\" % (\"+ MALE SCORE\", \":\", str(round(is_male_log_likelihood,3))))          if is_male_log_likelihood > is_female_log_likelihood: winner = \"male\"         else                                                : winner = \"female\"         return winner   if __name__== \"__main__\":     #gender_identifier = GenderIdentifier(\"TestingData\/females\", \"TestingData\/males\", \"females.gmm\", \"males.gmm\")     #gender_identifier = GenderIdentifier(\"males\", \"females\", \"males.gmm\",\"females.gmm\")     gender_identifier = GenderIdentifier(\"males\", \"females\", \"males.gmm\",\"females.gmm\")     gender_identifier.process() <\/code><\/pre>\n<p>  <\/div>\n<\/p><\/div>\n<p>  \u041d\u0430 \u0432\u044b\u0445\u043e\u0434\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0444\u0430\u0439\u043b, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u0442\u043e\u043c, \u0433\u0434\u0435 \u0433\u043e\u0432\u043e\u0440\u044f\u0449\u0438\u0439 \u2014 \u043c\u0443\u0436\u0447\u0438\u043d\u0430, \u0433\u0434\u0435 \u2014 \u0436\u0435\u043d\u0449\u0438\u043d\u0430 \u2014 <a href=\"https:\/\/drive.google.com\/file\/d\/1Sb3DwfQkElH4rGl9m_YoSkFH_NWYy1GW\/view?usp=sharing\" rel=\"nofollow noopener noreferrer\">file<\/a><\/p>\n<p>  \u0427\u0442\u043e \u0434\u0430\u043b\u044c\u0448\u0435?<\/p>\n<h3>\u041f\u0435\u0440\u0435\u0432\u0435\u0441\u0442\u0438 \u0430\u043d\u0433\u043b. .txt \u0432 .txt \u043d\u0430 \u0440\u0443\u0441\u0441\u043a\u043e\u043c<\/h3>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/webt\/16\/u7\/rx\/16u7rx23gtxbuqoyzgnu0mqu9y0.jpeg\" data-src=\"https:\/\/habrastorage.org\/webt\/16\/u7\/rx\/16u7rx23gtxbuqoyzgnu0mqu9y0.jpeg\" data-blurred=\"true\"\/><\/p>\n<p>  \u0414\u043b\u044f \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0430 \u0442\u0435\u043a\u0441\u0442\u043e\u0432 \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0442\u043e\u0442 \u0436\u0435 \u043f\u043e\u0434\u0445\u043e\u0434, \u0447\u0442\u043e \u0438 \u0432 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 <a href=\"https:\/\/habr.com\/ru\/articles\/778510\/\">\u0441\u0442\u0430\u0442\u044c\u0435<\/a>. \u0411\u0435\u0437 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439.<\/p>\n<p>  \u041d\u0430 \u0432\u044b\u0445\u043e\u0434\u0435 15k \u0444\u0430\u0439\u043b\u043e\u0432 \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 ru:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/webt\/bm\/y_\/uh\/bmy_uh1db-dlq-9_fwvz4zy8ffa.jpeg\" data-src=\"https:\/\/habrastorage.org\/webt\/bm\/y_\/uh\/bmy_uh1db-dlq-9_fwvz4zy8ffa.jpeg\" data-blurred=\"true\"\/><br \/>  \u0421 \u0442\u0435\u043a\u0441\u0442\u043e\u043c \u043d\u0430 \u0440\u0443\u0441\u0441\u043a\u043e\u043c \u044f\u0437\u044b\u043a\u0435.<\/p>\n<h3>\u041a\u043e\u043d\u0432\u0435\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c .txt \u043d\u0430 \u0440\u0443\u0441. \u0432 .wav \u043d\u0430 \u0440\u0443\u0441<\/h3>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/webt\/us\/za\/pb\/uszapbe8lqpxfua5gub9cpzcue4.jpeg\" data-src=\"https:\/\/habrastorage.org\/webt\/us\/za\/pb\/uszapbe8lqpxfua5gub9cpzcue4.jpeg\" data-blurred=\"true\"\/><\/p>\n<p>  \u041f\u0440\u0438 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0435 \u0438\u0437 txt \u0432 wav \u043e\u043f\u044f\u0442\u044c \u0436\u0435 \u0431\u0443\u0434\u0443\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f silero \u043c\u043e\u0434\u0435\u043b\u0438, \u0440\u0430\u0431\u043e\u0442\u0430 \u0441 \u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u0442\u0430\u043a\u0436\u0435 \u0431\u044b\u043b\u0430 \u043e\u043f\u0438\u0441\u0430\u043d\u0430 \u0432 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u0441\u0442\u0430\u0442\u044c\u0435. <\/p>\n<p>  \u041d\u043e \u0441 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u043c\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f\u043c\u0438: \u0431\u0443\u0434\u0435\u043c \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c \u043f\u043e\u043b \u0433\u043e\u0432\u043e\u0440\u044f\u0449\u0435\u0433\u043e. <\/p>\n<p>  \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0444\u0430\u0439\u043b out.txt, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043a \u0438\u043c\u0435\u043d\u0430\u043c \u0444\u0430\u0439\u043b\u043e\u0432 \u00ab\u043f\u0440\u0438\u0432\u044f\u0437\u0430\u043d\u00bb \u043f\u043e\u043b. \u0416\u0435\u043d\u0441\u043a\u0438\u0439 \u0433\u043e\u043b\u043e\u0441 \u2014 &#8216;baya&#8217;, \u043c\u0443\u0436\u0441\u043a\u043e\u0439 \u2014 &#8216;eugene&#8217;. <\/p>\n<pre><code class=\"python\"> import torch,csv from datetime import datetime from glob import glob import multiprocessing torch._C._jit_set_profiling_mode(False)  language = 'ru' model_id = 'v4_ru' device = torch.device('cpu')  model, _ = torch.hub.load(repo_or_dir='snakers4\/silero-models',                                      model='silero_tts',                                      language=language,                                      speaker=model_id) model.to(device)  # gpu or cpu sample_rate = 48000 #speaker = 'baya' #xenia put_accent=True put_yo=True  with open('out.txt') as f:     genders = {line[0]:line[1] for line in csv.reader(f)}  def job(file):         with open (file) as f:         text=f.read()         a=file.split('\\\\')[1].split('.')[0]         gender=genders[f'{a}.wem.wav']     if gender=='female':         try:             model.save_wav(text=text,                        audio_path= f'{a}.wav',                        sample_rate = sample_rate,                        speaker = 'baya' )         except:             pass     else:         try:             model.save_wav(text=text,                        audio_path= f'{a}.wav',                        sample_rate = sample_rate,                        speaker = 'eugene' )         except:             pass  for f in glob(r'.\/*.ru'):     job(f) <\/code><\/pre>\n<p>  \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u2014 \u0432\u0441\u0435 \u0442\u0435 \u0436\u0435 15000 \u0444\u0430\u0439\u043b\u043e\u0432, \u043d\u043e \u0443\u0436\u0435 \u0441 \u0440\u0443\u0441\u0441\u043a\u0438\u043c\u0438 \u043c\u0443\u0436\u0441\u043a\u0438\u043c \u0438 \u0436\u0435\u043d\u0441\u043a\u0438\u043c \u0433\u043e\u043b\u043e\u0441\u0430\u043c\u0438.<br \/>  \u041f\u0440\u043e\u0446\u0435\u0441\u0441 \u043b\u043e\u043a\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0438\u0433\u0440\u044b \u043f\u0440\u0438\u0431\u043b\u0438\u0437\u0438\u043b\u0441\u044f \u043a \u0444\u0438\u043d\u0430\u043b\u0443 \u2014 \u043e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0437\u0430\u043f\u0430\u043a\u043e\u0432\u0430\u0442\u044c \u0432 wem \u0444\u043e\u0440\u043c\u0430\u0442 \u0433\u043e\u0442\u043e\u0432\u044b\u0435 \u0444\u0430\u0439\u043b\u044b.<\/p>\n<p>  \u041d\u043e \u0442\u0443\u0442 \u043d\u0435 \u0432\u0441\u0435 \u0442\u0430\u043a \u043f\u0440\u043e\u0441\u0442\u043e.<\/p>\n<h3>Wav-to-wem.<\/h3>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/webt\/xn\/xo\/ky\/xnxokywdgiegrcrnudb3ryxegfi.jpeg\" data-src=\"https:\/\/habrastorage.org\/webt\/xn\/xo\/ky\/xnxokywdgiegrcrnudb3ryxegfi.jpeg\" data-blurred=\"true\"\/><\/p>\n<p>  Wem \u0444\u043e\u0440\u043c\u0430\u0442 \u2014 \u044d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u0436\u0430\u0442\u044b\u0435 wav, \u0435\u0441\u043b\u0438 \u0443\u043f\u0440\u043e\u0449\u0435\u043d\u043d\u043e. \u0413\u043e\u0442\u043e\u0432\u044b\u0435 wem \u0437\u0430\u043d\u0438\u043c\u0430\u044e\u0442 \u0433\u043e\u0440\u0430\u0437\u0434\u043e \u043c\u0435\u043d\u044c\u0448\u0435 \u043c\u0435\u0441\u0442\u0430 \u043d\u0430 \u0434\u0438\u0441\u043a\u0435, \u0438 \u0432 \u044d\u0442\u043e\u043c \u0447\u0435\u043c-\u0442\u043e \u043f\u043e\u0445\u043e\u0436\u0438 \u043d\u0430 \u0444\u043e\u0440\u043c\u0430\u0442 ogg.<\/p>\n<p>  \u041d\u0430 github \u0438\u043c\u0435\u0435\u0442\u0441\u044f \u043f\u0430\u0440\u0430-\u0442\u0440\u043e\u0439\u043a\u0430 \u043a\u043e\u043d\u0432\u0435\u0440\u0442\u043e\u0440\u043e\u0432 \u043d\u0430 python \u0432 wem, \u043d\u043e \u0441 \u0443\u0441\u0435\u0447\u0435\u043d\u043d\u044b\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u043e\u043c. \u0414\u043e\u0431\u0438\u0442\u044c\u0441\u044f \u043e\u0442 \u043d\u0438\u0445 \u0440\u0430\u0431\u043e\u0442\u043e\u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u0438 \u043f\u043e\u0434 \u0442\u0435\u043a\u0443\u0449\u0443\u044e \u0437\u0430\u0434\u0430\u0447\u0443 \u0430\u0432\u0442\u043e\u0440\u0443 \u043d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c.<\/p>\n<p>  \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 Wwise \u043e\u0442 Audiokinetic \u2014 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/webt\/_l\/ud\/a6\/_luda6cvtalbvvmabtf3ygaizle.jpeg\" data-src=\"https:\/\/habrastorage.org\/webt\/_l\/ud\/a6\/_luda6cvtalbvvmabtf3ygaizle.jpeg\" data-blurred=\"true\"\/><\/p>\n<p>  \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443 \u2014 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0435 \u0438\u0441\u043f\u044b\u0442\u0430\u043d\u0438\u0435 \u043d\u0430 \u0441\u0442\u043e\u0439\u043a\u043e\u0441\u0442\u044c.<\/p>\n<p>  \u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u0441\u0430\u0439\u0442\u0435, \u0430 \u0434\u0430\u043b\u0435\u0435 \u0434\u043b\u044f \u0440\u043e\u0441\u0441\u0438\u0439\u0441\u043a\u043e\u0439 \u043f\u0443\u0431\u043b\u0438\u043a\u0438 \u2014 \u0445\u043e\u0434 \u0437\u0430\u043a\u0440\u044b\u0442.<br \/>  \u0421\u043a\u0430\u0447\u0430\u0442\u044c \u0437\u0430\u0433\u0440\u0443\u0437\u0447\u0438\u043a \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f. VPN? \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e.<\/p>\n<p>  \u041d\u043e \u0442\u043e\u043b\u044c\u043a\u043e VPN \u043d\u0435 \u0434\u043b\u044f \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430, \u0430 \u0434\u043b\u044f \u041f\u041a. \u0422\u0430\u043a \u043a\u0430\u043a \u043f\u0440\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0435 \u0437\u0430\u0433\u0440\u0443\u0437\u0447\u0438\u043a \u0431\u0443\u0434\u0435\u0442 \u0435\u0449\u0435 \u0438 \u0441\u0430\u043c\u0443 Wwise \u0441\u043a\u0430\u0447\u0438\u0432\u0430\u0442\u044c.<\/p>\n<p>  \u0415\u0441\u043b\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0443\u0441\u043f\u0435\u0448\u043d\u0430 \u2014 \u0434\u043e\u0431\u0440\u043e \u043f\u043e\u0436\u0430\u043b\u043e\u0432\u0430\u0442\u044c \u0432 Wwise:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/webt\/vf\/4t\/ol\/vf4tolxxokdvuiea1tjink3egjg.jpeg\" data-src=\"https:\/\/habrastorage.org\/webt\/vf\/4t\/ol\/vf4tolxxokdvuiea1tjink3egjg.jpeg\" data-blurred=\"true\"\/><\/p>\n<p>  \u0414\u0430\u043b\u0435\u0435, \u043a\u043e\u0440\u043e\u0442\u043a\u0438\u0439 \u0440\u043e\u043b\u0438\u043a \u0441 \u0440\u0435\u0441\u0443\u0440\u0441\u0430 \u2014 <a href=\"https:\/\/www.youtube.com\/watch?v=39Oeb4GvxEc\" rel=\"nofollow noopener noreferrer\">wav-to-wem<\/a> \u043f\u043e\u0434\u043a\u0443\u043f\u0430\u0435\u0442 \u0441\u0432\u043e\u0435\u0439 \u043f\u0440\u043e\u0441\u0442\u043e\u0442\u043e\u0439.<\/p>\n<p>  \u041d\u043e\u2026 \u0435\u0441\u043b\u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u043e\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u0432 wwise \u0443\u0436\u0435 \u0433\u043e\u0442\u043e\u0432\u044b\u0435 wav \u043d\u0430 \u0440\u0443\u0441\u0441\u043a\u043e\u043c \u0438 \u0441\u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u00ab\u043a\u0430\u043a \u0435\u0441\u0442\u044c\u00bb, \u0433\u043e\u0442\u043e\u0432\u044b\u0435 wem \u0432 \u0438\u0433\u0440\u0435 \u043d\u0435 \u0437\u0430\u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442. \u0411\u0443\u0434\u0435\u0442 \u043f\u0440\u043e\u0441\u0442\u043e \u0442\u0438\u0448\u0438\u043d\u0430, \u0438\u0433\u0440\u0430 \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0432\u044b\u043b\u0435\u0442\u0430\u0442\u044c \u043d\u0435 \u0431\u0443\u0434\u0435\u0442.<\/p>\n<p>  \u041f\u043e\u044d\u0442\u043e\u043c\u0443, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u044c \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 \u0443\u043f\u0430\u043a\u043e\u0432\u043a\u0443 \u043f\u0435\u0440\u0432\u043e\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u044b\u0445 wem \u043d\u0430 \u0430\u043d\u0433\u043b. \u044f\u0437\u044b\u043a\u0435.<br \/>  \u0415\u0441\u043b\u0438 \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043a\u043e\u043d\u0441\u043e\u043b\u044c\u043d\u043e\u0439 \u0443\u0442\u0438\u043b\u0438\u0442\u043e\u0439 vgm-stream \u0438\u0437 \u043f\u0430\u043a\u0435\u0442\u0430 vgmstream-win64 \u0438\u0437 \u043d\u0430\u0447\u0430\u043b\u0430 \u0441\u0442\u0430\u0442\u044c\u0438, \u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0443\u0437\u043d\u0430\u0442\u044c, \u0447\u0442\u043e wem-\u0444\u0430\u0439\u043b \u043d\u0430 \u0430\u043d\u0433\u043b. (\u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b) \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0442\u0430\u043a:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/webt\/bg\/th\/ba\/bgthbac0vh6q0uzch-akwpart_4.jpeg\" data-src=\"https:\/\/habrastorage.org\/webt\/bg\/th\/ba\/bgthbac0vh6q0uzch-akwpart_4.jpeg\" data-blurred=\"true\"\/><\/p>\n<p>  \u0412 \u0442\u043e \u0432\u0440\u0435\u043c\u044f \u043a\u0430\u043a WWise \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0432\u044b\u0434\u0430\u0435\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0444\u043e\u0440\u043c\u0430\u0442:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/webt\/hx\/dz\/6v\/hxdz6vsdz5vfwq5vpbstlqd5rq0.jpeg\" data-src=\"https:\/\/habrastorage.org\/webt\/hx\/dz\/6v\/hxdz6vsdz5vfwq5vpbstlqd5rq0.jpeg\" data-blurred=\"true\"\/><\/p>\n<p>  \u0420\u0430\u0437\u043d\u0438\u0446\u0430 \u0432 \u044d\u043d\u043a\u043e\u0434\u0435\u0440\u0435 \u0438 \u0431\u0438\u0442\u0440\u0435\u0439\u0442\u0435.<\/p>\n<p>  \u041a\u0430\u043a \u044d\u0442\u043e \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u0442\u044c?<\/p>\n<p>  \u041f\u043e\u0441\u043b\u0435 \u0438\u043c\u043f\u043e\u0440\u0442\u0430 \u0432\u0441\u0435\u0445 \u0430\u0443\u0434\u0438\u043e\u0444\u0430\u0439\u043b\u043e\u0432 \u0432 \u043f\u0440\u043e\u0435\u043a\u0442, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u043e\u0434\u0438\u043d \u0438\u0437 \u043d\u0438\u0445 (\u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0442\u0441\u044f \u043a\u043e \u0432\u0441\u0435\u043c \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u043c \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438).<\/p>\n<p>  \u0412\u044b\u0431\u0440\u0430\u0442\u044c \u0444\u043e\u0440\u043c\u0430\u0442 Vorbis, \u0434\u0430\u043b\u0435\u0435 \u043d\u0430\u0436\u0430\u0442\u044c Edit \u0432\u043e \u0432\u043a\u043b\u0430\u0434\u043a\u0435 Adv.:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/webt\/ho\/mx\/nk\/homxnksug7ou6ldev95q_isjhnq.jpeg\" data-src=\"https:\/\/habrastorage.org\/webt\/ho\/mx\/nk\/homxnksug7ou6ldev95q_isjhnq.jpeg\" data-blurred=\"true\"\/><\/p>\n<p>  \u0412\u044b\u0431\u0440\u0430\u0442\u044c \u0431\u0438\u0442\u0440\u0435\u0439\u0442, \u043f\u0440\u0438\u0431\u043b\u0438\u0436\u0435\u043d\u043d\u044b\u0439 \u043a \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u043e\u043c\u0443 wem \u043d\u0430 \u0430\u043d\u0433\u043b.:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/webt\/o1\/kx\/yj\/o1kxyjrkeaqmtvzkklbfp2sdfqy.jpeg\" data-src=\"https:\/\/habrastorage.org\/webt\/o1\/kx\/yj\/o1kxyjrkeaqmtvzkklbfp2sdfqy.jpeg\" data-blurred=\"true\"\/><\/p>\n<p>  \u0414\u0430\u043b\u0435\u0435, \u043c\u043e\u0436\u043d\u043e \u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432 wem \u043f\u043e \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0439 \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u0435 (\u0441\u043c. \u0440\u043e\u043b\u0438\u043a \u0441 youtube \u0432\u044b\u0448\u0435):<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/webt\/az\/be\/bl\/azbeblumqqwsjp9htg2eyvazqdc.jpeg\" data-src=\"https:\/\/habrastorage.org\/webt\/az\/be\/bl\/azbeblumqqwsjp9htg2eyvazqdc.jpeg\" data-blurred=\"true\"\/><\/p>\n<p>  \u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u0433\u043e\u0442\u043e\u0432\u044b\u043c\u0438 \u0444\u0430\u0439\u043b\u0430\u043c\u0438 wem \u043d\u0443\u0436\u043d\u043e \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u044c \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044b \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0439 \u043f\u0430\u043f\u043a\u0435 \u0438\u0433\u0440\u044b.<\/p>\n<p>  \u041d\u0430 \u044d\u0442\u043e\u043c \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0430 \u043c\u043e\u0436\u043d\u043e \u0441\u0447\u0438\u0442\u0430\u0442\u044c \u043e\u043a\u043e\u043d\u0447\u0435\u043d\u043d\u044b\u043c.<\/p>\n<p>  \u0412 \u0438\u0433\u0440\u0435 \u0442\u0430\u043a\u0436\u0435 \u0435\u0441\u0442\u044c \u0444\u0430\u0439\u043b\u044b \u0444\u043e\u0440\u043c\u0430\u0442\u0430 .bnk \u2014 \u044d\u0442\u043e, \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u043e, \u0444\u0430\u0439\u043b\u044b \u0434\u0438\u0430\u043b\u043e\u0433\u043e\u0432 \u0438 \u0440\u043e\u043b\u0438\u043a\u043e\u0432. <br \/>  \u041d\u043e \u044d\u0442\u0438\u0445 \u0444\u0430\u0439\u043b\u043e\u0432 \u043d\u0435 \u0442\u0430\u043a \u043c\u043d\u043e\u0433\u043e, \u0438 \u043c\u043e\u0436\u043d\u043e \u00ab\u043f\u043e\u0442\u0435\u0440\u043f\u0435\u0442\u044c \u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u0438\u0439\u00bb.<\/div>\n<\/div>\n<\/div>\n<p><!----><!----><\/div>\n<p><!----><!----><br \/> \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\/787708\/\"> https:\/\/habr.com\/ru\/articles\/787708\/<\/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-1\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<div class=\"oembed\">\n<div class=\"tm-iframe_temp\" data-src=\"https:\/\/embedd.srv.habr.com\/iframe\/65ac00a2a5e031d47d36554f\" data-style=\"\" id=\"65ac00a2a5e031d47d36554f\" width=\"\"><\/div>\n<\/div>\n<p>  \u041d\u0430 \u0434\u0430\u043d\u043d\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c \u043f\u0435\u0440\u0435\u0432\u043e\u0434 .wem \u0444\u0430\u0439\u043b\u043e\u0432 \u0430\u0443\u0434\u0438\u043e \u043e\u0434\u043d\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430 (\u0430\u043d\u0433\u043b.) \u043d\u0430 \u0434\u0440\u0443\u0433\u043e\u0439 \u044f\u0437\u044b\u043a (\u0440\u0443\u0441\u0441\u043a\u0438\u0439) \u0441 \u043f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u0443\u043f\u0430\u043a\u043e\u0432\u043a\u043e\u0439 \u0432 .wem \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0432 \u0438\u0433\u0440\u0435. \u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0431\u0443\u0434\u0443\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f python, \u043d\u0435\u0439\u0440\u043e\u0441\u0435\u0442\u0438, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 Wwise. \u0418\u0437 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0433\u043e \u2014 \u0442\u0430\u043a\u0436\u0435 \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0441\u0435\u0442\u044c, \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u044e\u0449\u0430\u044f \u043f\u043e\u043b (gender) \u0433\u043e\u0432\u043e\u0440\u044f\u0449\u0435\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043f\u0435\u0440\u0435\u0432\u043e\u0434 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0441\u044f \u0434\u0432\u0443\u0445\u0433\u043e\u043b\u043e\u0441\u044b\u043c.  <\/p>\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-365848","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/365848","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=365848"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/365848\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=365848"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=365848"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=365848"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}