0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【AWS EC2】VOICEVOXサーバーをクラウド化してみる

0
Last updated at Posted at 2025-10-05

導入

あまり手で触ることのないVOICEVOXを、ローカルPC上で立ちあげっぱなしにしておくのも微妙かな......。
ということで、クラウドに逃がしてしまおう、という試み。
なにぶんインフラ周りの実装をしたことがない身なので、terraformの導入からよちよち進めていく。

環境

Windows 11 Home
バージョン:24H2

Terraform v1.13.3 on windows_amd64

aws-cli/2.31.8 Python/3.13.7 Windows/11 exe/AMD64

手順

  • terraformの導入
  • aws cliの導入
  • AWS IAMユーザーの作成・アクセスキーの取得
  • main.tfの実装
  • terraform applyと疎通確認

本編

terraformの導入

Windowsには"Chocolatey"というパッケージ管理システムがあるようで、今回はそちらを使ってterraformを導入する。
Macでいうところのhomebrewのようなものらしい。
メロスはWindowsがわからぬ。

> choco install terraform -y

実行が終わったら、疎通を確認......

> terraform -v
Terraform v1.13.3
on windows_amd64

大丈夫そう。

ちなみに、terraformコマンドのパスを通しておく必要がある。
システム環境変数のPathの値に、こちらを追加しておく。

C:\ProgramData\chocolatey\bin

aws cliの導入

同じ流れで、aws cliも導入していく。

> choco install awscli -y

完了後にこちらで疎通確認。

> aws --version
aws-cli/2.31.8 Python/3.13.7 Windows/11 exe/AMD64

ちなみにこちらもパスを通しておくこと。

C:\Program Files\Amazon\AWSCLIV2\

AWS IAMユーザーの作成・アクセスキーの取得

※ AWSアカウントはある前提とします

AWSコンソールに入り、右上の「ユーザーの作成」を押下。
image.png

UIに従って、ユーザー名やユーザーアクセスに関するオプションを設定する。
今回はカスタムパスワードをここで設定しつつ、新しいパスワードの設定はOFFにした。
image.png

次の画面では許可のオプションを設定。
今回はお遊びなのでポリシーを直接アタッチ -> AdministoratorAccessを選択したが、適宜必要なものだけを指定したポリシーをアタッチすること。
この画面は少しわかりにくいが、下にスクロールすると「次へ」ボタンがあるので、押下して次の画面へ。
image.png

次の画面で入力内容の最終確認ができるので、問題なければ「ユーザーの作成」を押下して作成。

作成できたユーザーの画面から「セキュリティ認証情報」というタブを見ると、「アクセスキー」という欄がある。
こちらも今後必要になるので、「アクセスキーを作成」ボタンから作成に移る。
image.png

自分はもう作ってあるので「アクセスキー(1)」になっています

今回はCLIが使いたいので、ユースケースは「コマンドラインインターフェイス」を選んでおく。
下に推奨された代替案が表示されるが、今回はチェックボックスにチェックをいれて無視。
image.png

AWS IAMユーザーは非推奨になっているので、ちゃんと作る場合はIAM Identity Centerを使った方がよさそうです。
今回は一旦ね、一旦......(後日ちゃんとしたバージョンもやります)

次の画面で説明タグを設定すれば、はれてアクセスキーを作成できる。
「アクセスキーを作成」を押したタイミングで、「IAMユーザー名_accessKeys.csv」という名前でcsvファイルがダウンロードされる。
中身はAccess key ID,Secret access keyの組み合わせになっているので、ご確認のこと。
image.png

ここまでできたらコンソールに戻って、awsコマンドの設定を進める。

> aws configure

以下の順に入力を求められるので、適宜入力していく。

AWS Access Key ID    : AWS IAMで発行したアクセスキー
AWS Secret Access Key: 同上(シークレットキー)
Default region name	 : ap-northeast-1
Default output format: json

これらの設定は下記のファイルに登録されて、terraformはこれを参照して動作する。
C:\Users\<ユーザー名>\.aws\credentials
C:\Users\<ユーザー名>\.aws\config

ここまでの疎通確認として、下記を実行。
こんな感じの結果が得られればOK。

> aws sts get-caller-identity
{
    "UserId": "ユーザーID",
    "Account": "123456789012",
    "Arn": "arn:aws:iam::123456789012:user/your-iam-user"
}

main.tfの実装

結果から書くと、今回は概ねこんな実装になった。

main.tf
terraform {
  required_version = ">= 1.0.0"
  required_providers {
    aws = {
      source  = "hashicorp/aws"
      version = "~> 5.0"
    }
  }
}

# AWSのプロバイダ設定
provider "aws" {
  region = "ap-northeast-1"
}

# セキュリティグループを作成
resource "aws_security_group" "voicevox_sg" {
  name        = "voicevox_sg"
  description = "Allow SSH and VOICEVOX API inbound traffic"

  ingress {
    from_port   = 22
    to_port     = 22
    protocol    = "tcp"
    cidr_blocks = ["0.0.0.0/0"]
  }

  ingress {
    description = "VOICEVOX API"
    from_port   = 50021
    to_port     = 50021
    protocol    = "tcp"
    cidr_blocks = ["0.0.0.0/0"]
  }

  egress {
    from_port   = 0
    to_port     = 0
    protocol    = "-1"
    cidr_blocks = ["0.0.0.0/0"]
  }
}

# EC2インスタンスを作成
resource "aws_instance" "voicevox_instance" {
  ami           = "ami-0d4aa492f133a3068"
  instance_type = "t3.micro"
  vpc_security_group_ids = [aws_security_group.voicevox_sg.id]

  user_data = <<-EOF
              #!/bin/bash
              dnf update -y
              dnf install -y docker
              systemctl enable docker
              systemctl start docker
              docker run -d -p 50021:50021 voicevox/voicevox_engine:cpu-latest
              EOF

  tags = {
    Name = "terraform-voicevox-instance"
  }
}

output "ec2_public_ip" {
  value = aws_instance.voicevox_instance.public_ip
}

至らない部分もあると思いますが、適宜いじって使ってください

EC2インスタンス上でVOICEVOXを動かす上で、最低限必要な

  • セキュリティグループの作成
  • EC2インスタンスの作成
  • VOICEVOXエンジンのインストール

の3点を実装した。
インスタンスの起動と同時に、VOICEVOXのdockerイメージを利用してVOICEVOXが立ち上がる。
ポートは50021番で動くらしい。
※ インスタンスは自分に合ったものを選んでください。今回は無料枠のt3.micro。

terraform applyと疎通確認

> terraform apply
(中略)
Terraform will perform the following actions:
(中略)
Plan: 2 to add, 0 to change, 0 to destroy.

Do you want to perform these actions?
  Terraform will perform the actions described above.
  Only 'yes' will be accepted to approve.

  Enter a value:

2件が作られ、0件が更新され、0件がなくなりますよ、というplan結果が出ていればOK。
yesを入力して少し待つと、リソースが作成される。

  Enter a value: yes

aws_security_group.セキュリティグループ名: Creating...
aws_security_group.セキュリティグループ名: Creation complete after 4s
aws_instance.インスタンス名: Creating...
aws_instance.インスタンス名: Still creating... [00m10s elapsed]
aws_instance.インスタンス名: Creation complete after 13s

Apply complete! Resources: 2 added, 0 changed, 0 destroyed.

これで、EC2インスタンスが起動していることをコンソール上から確認できるはず。

最後に、作成されたEC2インスタンスのオープンIPを使って、ブラウザから下記にアクセスする。
http://IPアドレス:50021/docs
こんな画面が開ければ、疎通成功。
image.png

まとめ

つたない部分はありつつ、VOICEVOXのクラウド化という目的は達成できた。
裏で試したところ、audio_queryやsynthesisを使って、任意の文字列を音声出力させることもできた。
もしローカルPCでVOICEVOX動かしたくないな~という方がいれば、ぜひ。
遊びがてら勉強にもなって、ちょうどいいかも。

p.s.
立ちあげたEC2インスタンスはdestroyでお片付けしよう!

> terraform destroy

お財布にやさしくなれるぞ!

参考文献

実際のところはほとんどAIと対話して進めた。Cursorすごい。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?