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設定
-
OpenAI Compatible設定の追加
- モデル → OpenAI Compatible → 設定を追加
- ベースURL:
http://[voicevox-openai-ttsをデプロイしたマシンのIP]:[同左のポート番号]/v1 - APIキー: 不要
-
TTSモデルの追加
- 1.で追加した設定 → Models
- モデルタイプ: TTS
-
voicevox-v1にチェックを入れて追加
Voice ID設定
Podcastプロファイル設定画面でVoice IDを指定:
- 1: ずんだもん
- 2: 四国めたん
- 3-16: その他のキャラクター
若干ずんだもんの喋りが遅く聞こえる。
パフォーマンス検証結果
20分程度のPodcast生成において:
- 処理時間: 5-10分
- CPU使用率: 80-90%(4コア全体)
- メモリ使用量: 約6GB
- 品質: 非常に聞き取りやすい高品質な日本語音声
特に日本語の長い文章でも適切な間やアクセントで読み上げられ、ながら聞きにも耐えうるPodcastコンテンツとして十分な品質を得られた。
まとめ・所感
VOICEVOXを活用することで、Open Notebookでの日本語Podcast生成品質を大幅に改善できた。
公式のSpeachesソリューションではまだ日本語が不安定な印象であり、日本語での実用性を求める場合はVOICEVOXの選択が現実的である。また、CPUのみの環境でも実用的な処理速度を実現できることが確認できた。
今回の検証でメモリ使用量が6GB程度必要であることも明らかになった。一般的なDockerやDocker Composeを使った構築が推奨されるが、Kubernetes環境でも問題なく動作することを確認できた。
GPU導入による処理速度向上は期待できるものの、個人利用の範疇においては、現状でも実用レベルの聞き取りやすい日本語Podcastを生成できるソリューションである。




