質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

Q&A

0回答

325閲覧

aws sagemakerにて、学習済みの音響モデルをデプロイする方法がわかりません・・・。

masahiroview

総合スコア10

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

0グッド

0クリップ

投稿2022/09/04 03:13

編集2022/09/04 03:18

実現したいこと

aws sagemakerにて、学習済みの音響モデルをデプロイしたいと考えています。
以下の、比較的近い事例を参考に構築をすすめています。
https://dev.classmethod.jp/articles/realtime-inference-on-sagemaker-using-by-pose-estimation-model-pytorch-own-algorhythm/

困っていること

pythonの知識が乏しく、以下のソースコードをどのようにsagemaker指定の関数(input_fn,model_fn,predict_fn,output_fn)に落とし込む方法がわかりません・・・。

python,awsに詳しい方がいましたらご教授いただけますと幸いです。

該当のソースコード

TTS_inference.sh

python

1model_tag="kan-bayashi/jsut_tacotron2_accent_with_pause" 2train_config="" 3model_file="" 4 5vocoder_tag="parallel_wavegan/jsut_hifigan.v1" 6vocoder_config="" 7vocoder_file="" 8 9prosodic="false" 10fs="" 11 12. ../utils/parse_options.sh 13 14COMMAND="python tts_inference_with_accent.py " 15 16 17pwg=`pip list | grep parallel` 18if [ "$pwg" == "" ]; 19then 20 pip install -U parallel_wavegan 21fi 22 23ip=`pip list | grep ipython` 24if [ "$pwg" == "" ]; 25then 26 pip install -U IPython 27fi 28 29 30if [ "$train_config" == "" ] && [ "$model_file" == "" ] 31then 32 COMMAND="${COMMAND}--model_tag \"${model_tag}\" " 33else 34 COMMAND="${COMMAND}--train_config \"${train_config}\" " 35 COMMAND="${COMMAND}--model_file \"${model_file}\" " 36fi 37 38if [ "$vocoder_config" == "" ] && [ "$vocoder_file" == "" ] 39then 40 COMMAND="${COMMAND}--vocoder_tag \"${vocoder_tag}\" " 41else 42 COMMAND="${COMMAND}--vocoder_config \"${vocoder_config}\" " 43 COMMAND="${COMMAND}--vocoder_file \"${vocoder_file}\" " 44fi 45 46if [ ! "$fs" == "" ]; then COMMAND="${COMMAND}--fs ${fs} "; fi 47 48if [ "$prosodic" == "true" ]; then COMMAND="${COMMAND}-p"; fi 49 50echo "${COMMAND}" 51echo "" 52echo "" 53 54eval $COMMAND 55

tts_inference_with_accent.py

python

1import os 2import time 3import torch 4import pyopenjtalk 5from espnet2.bin.tts_inference import Text2Speech 6import matplotlib.pyplot as plt 7from espnet2.tasks.tts import TTSTask 8from espnet2.text.token_id_converter import TokenIDConverter 9import numpy as np 10 11import argparse 12import text_processing as texp 13 14 15 16prosodic=False 17 18parser = argparse.ArgumentParser() 19 20parser.add_argument("--model_tag") 21parser.add_argument("--train_config") 22parser.add_argument("--model_file") 23parser.add_argument("--vocoder_tag") 24parser.add_argument("--vocoder_config") 25parser.add_argument("--vocoder_file") 26parser.add_argument("-p", "--prosodic",help="Prosodic text input mode", action="store_true") 27parser.add_argument("--fs",type=int,default=24000) 28 29args = parser.parse_args() 30print(args) 31 32os.chdir('../') 33 34# Case 2: Load the local model and the pretrained vocoder 35print("download model = ",args.model_tag,"\n") 36print("download vocoder = ",args.vocoder_tag,"\n") 37print("モデルを読み込んでいます...\n") 38if args.model_tag is not None : 39 text2speech = Text2Speech.from_pretrained( 40 model_tag=args.model_tag, 41 vocoder_tag=args.vocoder_tag, 42 device="cuda", 43 ) 44elif args.vocoder_tag is not None : 45 text2speech = Text2Speech.from_pretrained( 46 train_config=args.train_config, 47 model_file=args.model_file, 48 vocoder_tag=args.vocoder_tag, 49 device="cuda", 50 ) 51else : 52 text2speech = Text2Speech.from_pretrained( 53 train_config=args.train_config, 54 model_file=args.model_file, 55 vocoder_config=args.vocoder_config, 56 vocoder_file=args.vocoder_file, 57 device="cuda", 58 ) 59 60guide="セリフを入力してください" 61if args.prosodic : 62 guide="アクセント句がスペースで区切られた韻律記号(^)付きのセリフをすべてひらがなで入力してください。(スペースや記号もすべて全角で)\n" 63x="" 64while(1): 65 # decide the input sentence by yourself 66 print(guide) 67 68 x = "デモ原稿" 69 if x == "exit" : 70 break 71 72 #model, train_args = TTSTask.build_model_from_file( 73 # args.train_config, args.model_file, "cuda" 74 # ) 75 76 token_id_converter = TokenIDConverter( 77 token_list=text2speech.train_args.token_list, 78 unk_symbol="<unk>", 79 ) 80 81 text = x 82 if args.prosodic : 83 tokens = texp.a2p(x) 84 text_ints = token_id_converter.tokens2ids(tokens) 85 text = np.array(text_ints) 86 else : 87 print("\npyopenjtalk_accent_with_pauseによる解析結果:") 88 print(texp.text2yomi(x),"\n") 89 90 91 # synthesis 92 with torch.no_grad(): 93 start = time.time() 94 data = text2speech(text) 95 wav = data["wav"] 96 #print(text2speech.preprocess_fn("<dummy>",dict(text=x))["text"]) 97 rtf = (time.time() - start) / (len(wav) / text2speech.fs) 98 print(f"RTF = {rtf:5f}") 99 100 if not os.path.isdir("generated_wav"): 101 os.makedirs("generated_wav") 102 103 if args.model_tag is not None : 104 if "tacotron" in args.model_tag : 105 mel = data['feat_gen_denorm'].cpu() 106 plt.imshow(torch.t(mel).numpy(), 107 aspect='auto', 108 origin='bottom', 109 interpolation='none', 110 cmap='viridis' 111 ) 112 plt.savefig('generated_wav/'+x+'.png') 113 else : 114 if "tacotron" in args.model_file : 115 mel = data['feat_gen_denorm'].cpu() 116 plt.imshow(torch.t(mel).numpy(), 117 aspect='auto', 118 origin='bottom', 119 interpolation='none', 120 cmap='viridis' 121 ) 122 plt.savefig('generated_wav/'+x+'.png') 123 124 125 # let us listen to generated samples 126 from IPython.display import display, Audio 127 import numpy as np 128 #display(Audio(wav.view(-1).cpu().numpy(), rate=text2speech.fs)) 129 #Audio(wav.view(-1).cpu().numpy(), rate=text2speech.fs) 130 np_wav=wav.view(-1).cpu().numpy() 131 132 133 print("サンプリングレート",args.fs,"で出力します。") 134 from scipy.io.wavfile import write 135 samplerate = args.fs 136 t = np.linspace(0., 1., samplerate) 137 amplitude = np.iinfo(np.int16).max 138 data = amplitude * np_wav/np.max(np.abs(np_wav)) 139 write("generated_wav/"+x+".wav", samplerate, data.astype(np.int16)) 140 print("\n\n\n") 141

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問