制作你自己的跟读练习音频
请注意:Supertonic 3 目前不支持中文,文中的 SuperClonica 声音可朗读其支持的 31 种语言。跟读(shadowing)是听一句话后立刻大声重复,模仿节奏和语调的练习方法。用自己的材料效果最好:课文句子、面试回答、教材里的对话。现成的跟读视频很少恰好包含这些句子。
本指南用免费的 SuperClonica 引擎把任意句子列表变成一条跟读音轨:每句先稍慢朗读,再用正常语速朗读,之后留出足够跟读的停顿。下面的脚本已经测试过,可离线运行,支持 31 种语言。
写好课文
在名为 lesson.txt 的文本文件里每行写一句。句子要短,一口气能说完,并按口语来写。空行会被跳过,所以可以随意分组。开始前,在目录中任意声音的页面试听一句 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 倍,足够你自己说一遍。三个短句大约生成半分钟的音轨。
按水平调整
初学者可以把第一遍放慢到 0.75,并把 GAP 加长到 1.6;高级学习者可以用 SPEEDS = (1.0,) 去掉慢速那一遍并缩短停顿。把 LANGUAGE 设为你学习的语言,例如 en、es、de、fr、ja 或 ko;暂不支持中文。每个声音都会说全部 31 种语言,但用目标语言录制的声音听起来最地道。
每天练习
用任意音频工具把 WAV 转成 MP3 放到手机上,或在电脑上播放。连续一周每天跟读同一条音轨,然后换成新句子:新音轨一分钟就能做好。不时录下自己的声音与之对比,停顿让你更容易听出节奏的差别。