smallttsをDocker環境で動かす

初めに

軽量のTTSモデルの smallttsを動かしていきます。

github.com

英語以外は対応していないので、生成できる音声は英語のみになります

開発環境

環境構築

以下のDockerファイルを作成します

# CPU版Dockerfile - 軽量で高速起動
FROM python:3.10-slim

# 作業ディレクトリを設定
WORKDIR /app

# システムパッケージの更新と必要なパッケージをインストール
RUN apt-get update && apt-get install -y --no-install-recommends \
    espeak-ng \
    libsndfile1-dev \
    ffmpeg \
    git \
    curl \
    build-essential \
    && rm -rf /var/lib/apt/lists/*

# uvをインストール
RUN curl -LsSf https://astral.sh/uv/install.sh | sh
ENV PATH="/root/.local/bin:$PATH"

# プロジェクトファイルをコピー
COPY pyproject.toml README.md ./
COPY src ./src
COPY scripts ./scripts

# 依存関係をインストール
RUN uv sync --no-dev

# outディレクトリを作成
RUN mkdir -p /app/out

# assetsディレクトリを作成(後でボリュームマウントまたは自動ダウンロード)
RUN mkdir -p /app/assets

# デフォルトのコマンド
CMD ["bash"]

推論の実行

まずはDocker環境をビルドします

docker build -t smalltts:latest -f Dockerfile .

次にコンテナをバックグラウンドで実行します

docker run -d --name smalltts smalltts:latest sleep infinity

アセットをダウンロードします

docker exec smalltts uv run python -m smalltts.assets.ensure tryme codec e2e length

推論を実行します

docker exec smalltts uv run python scripts/tryme.py "Hello from smallTTS!"

生成した音声ファイルを取り出します

docker cp smalltts:/app/out/tryme.wav ./tryme.wav