GUIDE

Make your own shadowing practice audio

Shadowing means listening to a sentence and repeating it aloud right after, copying the rhythm and intonation. It works best with your own material: the phrases of your lesson, your job interview answers, the dialogue from your textbook. Ready-made shadowing videos rarely have exactly those sentences.

This guide turns any list of sentences into one shadowing track with the free SuperClonica engine: every sentence is voiced a little slower first, then at normal speed, each followed by a pause long enough to repeat it. We tested the script below; it runs offline and works in 31 languages.

Write the lesson

Put one sentence per line in a text file called lesson.txt. Keep sentences short, the length you can say in one breath, and write them the way people speak. Empty lines are skipped, so you can group the sentences however you like. Before you start, try a sentence on the page of any voice in the catalog, 30 to 100 characters, to pick a voice you like listening to, with no account.

The script

Install the engine and NumPy once:

pip install superclonica-cpu numpy

Save this as 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")

Then build the track:

python shadowing.py lesson.txt

Each sentence plays at 0.85 speed, then at normal speed, and after each one the pause is 1.3 times its length, enough time to say it yourself. With three short sentences the track lasts about half a minute.

Adjust it to your level

Beginners can slow the first pass to 0.75 and lengthen GAP to 1.6; advanced learners can drop the slow pass with SPEEDS = (1.0,) and shorten the pause. Set LANGUAGE to the language you study, for example es, de, fr, ja or ko; Chinese is not supported yet. Every voice speaks all 31 languages, though a voice recorded in your target language sounds the most native.

Use it every day

Convert the WAV to MP3 with any audio tool and put it on your phone, or play it from the computer. Shadow the track daily for a week, then replace the lesson with new sentences: making a new track takes a minute. Record yourself now and then and compare with the voice; the gaps make it easy to hear where your rhythm differs.