{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# 第4章 Python による音声信号処理\n",
"\n",
"[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/r9y9/ttslearn/blob/master/notebooks/ch04_Python-SP.ipynb)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 4.1 準備"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Python version"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Python 3.9.1 (default, Feb 5 2021, 16:06:04) \n",
"[GCC 9.3.0]\n"
]
}
],
"source": [
"!python -VV"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### ttslearn のインストール"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"%%capture\n",
"try:\n",
" import ttslearn\n",
"except ImportError:\n",
" !pip install ttslearn"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'0.2.2'"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"import ttslearn\n",
"ttslearn.__version__"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### ttslearn の動作確認"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
" \n",
" "
],
"text/plain": [
""
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from ttslearn.dnntts import DNNTTS\n",
"from IPython.display import Audio\n",
"\n",
"engine = DNNTTS()\n",
"wav, sr = engine.tts(\"日本語音声合成のデモです。\")\n",
"Audio(wav, rate=sr)"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"