2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Open NotebookでVOICEVOXを使った日本語Podcast生成

2
Posted at

Summary

  • Open Notebookの公式ドキュメントの手順に従いLocal TTS(Speaches/Kokoro)を構築したが、日本語の読み上げができなかった
  • VOICEVOXをOpenAI互換APIとしてラップするvoicevox-openai-ttsを使用し、聞き取りやすい高品質な日本語音声でPodcastを生成できた
  • CPUのみの環境でも20分のPodcastを5-10分で生成可能であった

やらないこと

  • VOICEVOXエンジン自体の詳細な仕組み解説
  • Open Notebookの基本的なセットアップ方法
  • Kubernetesの基礎概念説明

本記事における課題

Open NotebookでPodcastを作成する際、公式ドキュメントで推奨されているSpeaches(Kokoro-82M-v1.0-ONNX)を使用したところ、日本語の読み上げに失敗した。特にエラーメッセージも無く、無音のデータが出力されてしまい、使い物にならない状況であった。

そこで、日本語に特化したVOICEVOXを使った聞き取りやすい日本語Podcastの生成を目指した。

やったこと

環境構成

今回の検証環境(デスクトップPC)は以下である:

  • CPU: Intel(R) Xeon(R) E-2124 @ 3.30GHz (4 cores)
  • RAM: 32GB
  • GPU: なし(CPU処理のみ)

VOICEVOXとOpenAI互換APIの選択

Speachesの日本語品質に課題があったため、日本語に特化したVOICEVOXエンジンを採用した。しかし、VOICEVOXは独自のAPI形式を使用しているため、Open NotebookのOpenAI互換API要求と直接統合できない。

そこで、voicevox-openai-tts を使用してVOICEVOXをOpenAI互換APIとしてラップすることにした。これにより、Open Notebookから標準的なOpenAI TTS APIフォーマットでVOICEVOXを利用できるようになる。

環境構築方法

公式では docker-compose を使った構築が推奨されている。VOICEVOXコンテナ、および今回の voicevox-openai-tts をない方するコンテナをデプロイする形だ。

筆者の環境ではKubernetes(k3s)を使用しているため、参考までに以下のマニフェストで構築した:

apiVersion: v1
kind: Service
metadata:
  labels:
    app: tts
  name: tts-svc
  namespace: llm
spec:
  ports:
  - port: 8000
    protocol: TCP
    targetPort: 8000
  type: ClusterIP
  selector:
    app: tts
---
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: tts
  name: tts
  namespace: llm
spec:
  replicas: 1
  selector:
    matchLabels:
      app: tts
  template:
    metadata:
      labels:
        app: tts
    spec:
      containers:
      - image: voicevox/voicevox_engine:cpu-ubuntu24.04-0.26.0-dev
        name: voicevox
        ports:
        - containerPort: 50021
        env:
        - name: TZ
          value: Asia/Tokyo
      # voicevoxapi イメージは voicevox-openai-tts リポジトリの
      # Dockerfile をビルドして k3s(containerd) にインポートしたもの
      - image: voicevoxapi
        imagePullPolicy: Never
        name: api
        ports:
        - containerPort: 8000
        env:
        - name: TZ
          value: Asia/Tokyo
        - name: VOICEVOX_ENGINE_URL
          value: http://localhost:50021
      affinity:
        nodeAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
            nodeSelectorTerms:
            - matchExpressions:
              - key: kubernetes.io/hostname
                operator: In
                values:
                - [先述のスペックのマシンにデプロイされるようホスト名を指定]

voicevoxapiイメージは、 voicevox-openai-tts のDockerfileを使用して作成した。k3s環境でのコンテナイメージビルドについては、BuildKitを活用した手法が参考になる。

Open Notebookの設定

API設定

  1. OpenAI Compatible設定の追加

    • モデル → OpenAI Compatible → 設定を追加
    • ベースURL: http://[voicevox-openai-ttsをデプロイしたマシンのIP]:[同左のポート番号]/v1
    • APIキー: 不要

    スクリーンショット 2026-04-09 19.32.01.png

    スクリーンショット 2026-04-09 19.30.43.png

  2. TTSモデルの追加

    • 1.で追加した設定 → Models
    • モデルタイプ: TTS
    • voicevox-v1 にチェックを入れて追加

Voice ID設定

Podcastプロファイル設定画面でVoice IDを指定:

  • 1: ずんだもん
  • 2: 四国めたん
  • 3-16: その他のキャラクター

若干ずんだもんの喋りが遅く聞こえる。

スクリーンショット 2026-04-09 19.33.17.png

スクリーンショット 2026-04-09 19.33.05.png

パフォーマンス検証結果

20分程度のPodcast生成において:

  • 処理時間: 5-10分
  • CPU使用率: 80-90%(4コア全体)
  • メモリ使用量: 約6GB
  • 品質: 非常に聞き取りやすい高品質な日本語音声

特に日本語の長い文章でも適切な間やアクセントで読み上げられ、ながら聞きにも耐えうるPodcastコンテンツとして十分な品質を得られた。

スクリーンショット 2026-04-09 19.34.57.png

まとめ・所感

VOICEVOXを活用することで、Open Notebookでの日本語Podcast生成品質を大幅に改善できた。

公式のSpeachesソリューションではまだ日本語が不安定な印象であり、日本語での実用性を求める場合はVOICEVOXの選択が現実的である。また、CPUのみの環境でも実用的な処理速度を実現できることが確認できた。

今回の検証でメモリ使用量が6GB程度必要であることも明らかになった。一般的なDockerやDocker Composeを使った構築が推奨されるが、Kubernetes環境でも問題なく動作することを確認できた。

GPU導入による処理速度向上は期待できるものの、個人利用の範疇においては、現状でも実用レベルの聞き取りやすい日本語Podcastを生成できるソリューションである。

参考リンク

2
1
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
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?