Сделайте своё аудио для шэдоуинга
Шэдоуинг — это когда вы слушаете фразу и сразу повторяете её вслух, копируя ритм и интонацию. Лучше всего он работает на вашем собственном материале: фразах урока, ответах для собеседования, диалоге из учебника. Готовые видео для шэдоуинга редко содержат именно эти фразы.
В этом руководстве любой список фраз превращается в один трек для шэдоуинга с бесплатным движком 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 укажите язык, который учите, например es, de, fr, ja или ko; китайский пока не поддерживается. Каждый голос говорит на всех 31 языке, но естественнее всего звучит голос, записанный на изучаемом языке.
Занимайтесь каждый день
Сконвертируйте WAV в MP3 любой программой и закиньте на телефон или слушайте с компьютера. Шэдоуйте трек каждый день неделю, затем замените урок новыми фразами: новый трек делается за минуту. Время от времени записывайте себя и сравнивайте с голосом — паузы помогают услышать, где ваш ритм отличается.