自分専用のシャドーイング音声をつくる
シャドーイングは、文を聞いてすぐに声に出して繰り返し、リズムやイントネーションをまねる練習法です。いちばん効果があるのは自分の教材を使うときで、授業のフレーズ、面接の回答、教科書の会話などです。市販のシャドーイング動画にちょうどその文が入っていることはまずありません。
このガイドでは無料のSuperClonicaエンジンで、好きな文のリストを1本のシャドーイング音声にします。各文を少しゆっくり、次に通常の速さで読み、そのあとに繰り返すのに十分な間を入れます。下のスクリプトは動作確認済みで、オフラインかつ31言語で使えます。
教材を書く
lesson.txtというテキストファイルに、1行に1文ずつ書きます。一息で言える短さにし、話し言葉で書きましょう。空行は飛ばされるので、文は好きにまとめられます。始める前に、カタログのどの声のページでも30〜100文字の文を試して、聞きやすい声を選んでください。登録は不要です。
スクリプト
エンジンとNumPyを一度だけインストールします:
pip install superclonica-cpu numpy
これをshadowing.pyとして保存します:
import sys, wave
import numpy as np
from superclonica import Superclonica
LANGUAGE = "en" # the language you practise
VOICE = "F2" # M1..M5, F1..F5 or a voice file from the catalog
SPEEDS = (0.85, 1.0) # each sentence slower first, then at normal speed
GAP = 1.3 # pause after each sentence, as a multiple of its length
tts = Superclonica()
pieces, rate = [], None
for line in open(sys.argv[1], encoding="utf-8"):
sentence = line.strip()
if not sentence:
continue
for speed in SPEEDS:
tts.speed = speed
audio, rate = tts.synthesize(sentence, voice=VOICE, lang=LANGUAGE)
audio = np.asarray(audio, dtype=np.float32).reshape(-1)
pieces += [audio, np.zeros(int(len(audio) * GAP), dtype=np.float32)]
pcm = (np.clip(np.concatenate(pieces), -1, 1) * 32767).astype(np.int16)
with wave.open("shadowing.wav", "wb") as file:
file.setnchannels(1)
file.setsampwidth(2)
file.setframerate(rate)
file.writeframes(pcm.tobytes())
print(f"shadowing.wav: {len(pcm) / rate:.0f} s")音声をつくります:
python shadowing.py lesson.txt
各文は0.85倍の速さ、次に通常の速さで流れ、そのあとの間は文の長さの1.3倍で、自分で言うのに十分です。短い文3つで約30秒の音声になります。
レベルに合わせる
初心者は1回目を0.75に下げ、GAPを1.6に延ばすとよいでしょう。上級者はSPEEDS = (1.0,)でゆっくりの回を省き、間を短くできます。LANGUAGEには学習中の言語(en、es、de、fr、koなど)を指定します。中国語にはまだ対応していません。どの声も31言語すべてを話しますが、学習する言語で収録された声がいちばん自然に聞こえます。
毎日使う
WAVを好きな音声ツールでMP3に変換してスマホに入れるか、パソコンで再生します。1週間毎日同じ音声でシャドーイングし、その後は新しい文に差し替えましょう。新しい音声は1分でつくれます。ときどき自分の声を録音して比べると、間があるおかげでリズムのずれがわかりやすくなります。