From 2fa55170303cd01680ab249c1a6c6419cd4e5567 Mon Sep 17 00:00:00 2001 From: Jules Laplace Date: Sun, 29 Jul 2018 13:10:21 +0200 Subject: more notes --- NOTES | 26 +++++++++++++------------ docs/HOLLY SPEAKING.md | 17 ++++++++++++++++ docs/HOLLY VOICE.md | 53 ++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 84 insertions(+), 12 deletions(-) create mode 100644 docs/HOLLY VOICE.md diff --git a/NOTES b/NOTES index 2f6d1e1..dae0270 100644 --- a/NOTES +++ b/NOTES @@ -116,17 +116,17 @@ PYTHONPATH=`pwd` /home/spawn/.virtualenv/yukarin/bin/python scripts/process.py \ mkdir all for i in *.wav -do - dir=${i%.*} - ../br_misc/split.sh $i 12 $dir - cd $dir - for j in *.wav do - mv "$j" "${dir}_${j}" + dir=${i%.*} + ../br_misc/split.sh $i 12 $dir + cd $dir + for j in *.wav + do + mv "$j" "${dir}_${j}" + done + cd .. + mv $i/* all done - cd .. - mv $i/* all -done cd output/net/ mkdir concat @@ -135,9 +135,11 @@ function to_mp3 () { dir=$1 mkdir $dir for i in *.wav - do - ffmpeg -i $i "$dir/${i%.*}.mp3" - done + do + ffmpeg -i $i "$dir/${i%.*}.mp3" + done scp -r $dir jules@lmno:asdf/neural/yukarin/ } + + diff --git a/docs/HOLLY SPEAKING.md b/docs/HOLLY SPEAKING.md index 404ce42..69852ae 100644 --- a/docs/HOLLY SPEAKING.md +++ b/docs/HOLLY SPEAKING.md @@ -53,3 +53,20 @@ PYTHONPATH=`pwd` /home/spawn/.virtualenv/yukarin/bin/python scripts/process.py \ --input_directory ./test_data \ --output_directory ./output \ --gpu 0 + +PYTHONPATH=`pwd` /home/spawn/.virtualenv/yukarin/bin/python scripts/process.py \ + --conv_model_directory ./data/speaking-44100/net/speaking_mat_2_holly/ \ + --sr_model_directory ./data/singing-44100/net_sr/holly/ \ + --input_directory ./test_data \ + --output_directory ./output \ + --gpu 0 + +function to_mp3 () { + dir=$1; + mkdir $dir; + for i in *.wav; + do + ffmpeg -i $i "$dir/${i%.*}.mp3"; + done; + scp -r $dir jules@lmno:asdf/neural/yukarin/; +} \ No newline at end of file diff --git a/docs/HOLLY VOICE.md b/docs/HOLLY VOICE.md new file mode 100644 index 0000000..62e401d --- /dev/null +++ b/docs/HOLLY VOICE.md @@ -0,0 +1,53 @@ +# BUILD FEATURES + +PYTHONPATH=`pwd` python scripts/extract_acoustic_feature.py \ + --input1_directory './data/voice-44100/wav/holly' \ + --input2_directory './data/voice-44100/wav/mat' \ + --output1_directory './data/voice-44100/feat/holly' \ + --output2_directory './data/voice-44100/feat/mat' + +# TRAIN CONVERSION NETWORK + +/home/spawn/.virtualenv/yukarin/bin/python train.py \ + ./holly_2_mat_voice_conv.json \ + ./data/voice-44100/net/voice_mat_2_holly + +# TEST CONVERSION NETWORK + +PYTHONPATH=`pwd` /home/spawn/.virtualenv/yukarin/bin/python scripts/voice_conversion_test.py \ + --model_directory ./data/voice-44100/net/ \ + --input_wave_directory ./data/voice-44100/wav/mat/ \ + --gpu 0 \ + voice_mat_2_holly + +# EXTRACT SPECTROGRAMS + +mkdir -p ./data/voice-44100/net_sr/ +mkdir ./data/holly-44100/spec/holly/ + +PYTHONPATH=`pwd` python scripts/extract_spectrogram_pair.py \ + --input_directory './data/holly-44100/wav/' \ + --output_directory './data/holly-44100/spec/' + +# TRAIN SUPER RESOLUTION + +/home/spawn/.virtualenv/yukarin/bin/python train_sr.py \ + ./holly_voice_sr.json \ + ./data/holly-44100/net_sr/holly/ + +# TEST SUPER RESOLUTION + +/home/spawn/.virtualenv/yukarin/bin/python ./scripts/super_resolution_test.py \ + --model_directory ./data/holly-44100/net_sr/ \ + --input_wave_directory ./data/holly-44100/wav/holly/ \ + --gpu 0 \ + holly + +# VOICE TRANSFORM + +PYTHONPATH=`pwd` /home/spawn/.virtualenv/yukarin/bin/python scripts/process.py \ + --conv_model_directory ./data/voice-44100/net/voice_mat_2_holly/ \ + --sr_model_directory ./data/voice-44100/net_sr/holly/ \ + --input_directory ./test_data \ + --output_directory ./output \ + --gpu 0 -- cgit v1.2.3-70-g09d2 From f0f4dd17b2c5e07dd98ff48059f6090a670662dd Mon Sep 17 00:00:00 2001 From: Jules Laplace Date: Sun, 29 Jul 2018 18:10:35 +0200 Subject: singlehterad --- scripts/extract_spectrogram_pair_singlethread.py | 90 ++++++++++++++++++++++++ 1 file changed, 90 insertions(+) create mode 100644 scripts/extract_spectrogram_pair_singlethread.py diff --git a/scripts/extract_spectrogram_pair_singlethread.py b/scripts/extract_spectrogram_pair_singlethread.py new file mode 100644 index 0000000..a0ecf3a --- /dev/null +++ b/scripts/extract_spectrogram_pair_singlethread.py @@ -0,0 +1,90 @@ +""" +extract low and high quality spectrogram data. +""" + +import argparse +import multiprocessing +from pathlib import Path +from pprint import pprint + +import numpy +import pysptk +import pyworld +from tqdm import tqdm + +from become_yukarin.dataset.dataset import AcousticFeatureProcess +from become_yukarin.dataset.dataset import WaveFileLoadProcess +from become_yukarin.param import AcousticFeatureParam +from become_yukarin.param import VoiceParam + +base_voice_param = VoiceParam() +base_acoustic_feature_param = AcousticFeatureParam() + +parser = argparse.ArgumentParser() +parser.add_argument('--input_directory', '-i', type=Path) +parser.add_argument('--output_directory', '-o', type=Path) +parser.add_argument('--sample_rate', type=int, default=base_voice_param.sample_rate) +parser.add_argument('--top_db', type=float, default=base_voice_param.top_db) +parser.add_argument('--pad_second', type=float, default=base_voice_param.pad_second) +parser.add_argument('--frame_period', type=int, default=base_acoustic_feature_param.frame_period) +parser.add_argument('--order', type=int, default=base_acoustic_feature_param.order) +parser.add_argument('--alpha', type=float, default=base_acoustic_feature_param.alpha) +parser.add_argument('--f0_estimating_method', default=base_acoustic_feature_param.f0_estimating_method) +parser.add_argument('--enable_overwrite', action='store_true') +arguments = parser.parse_args() + +pprint(dir(arguments)) + + +def generate_file(path): + out = Path(arguments.output_directory, path.stem + '.npy') + if out.exists() and not arguments.enable_overwrite: + return + + # load wave and padding + wave_file_load_process = WaveFileLoadProcess( + sample_rate=arguments.sample_rate, + top_db=arguments.top_db, + pad_second=arguments.pad_second, + ) + wave = wave_file_load_process(path, test=True) + + # make acoustic feature + acoustic_feature_process = AcousticFeatureProcess( + frame_period=arguments.frame_period, + order=arguments.order, + alpha=arguments.alpha, + f0_estimating_method=arguments.f0_estimating_method, + ) + feature = acoustic_feature_process(wave, test=True).astype_only_float(numpy.float32) + high_spectrogram = feature.spectrogram + + fftlen = pyworld.get_cheaptrick_fft_size(arguments.sample_rate) + low_spectrogram = pysptk.mc2sp( + feature.mfcc, + alpha=arguments.alpha, + fftlen=fftlen, + ) + + # save + numpy.save(out.absolute(), { + 'low': low_spectrogram, + 'high': high_spectrogram, + }) + + +def main(): + paths = list(sorted(arguments.input_directory.glob('*'))) + arguments.output_directory.mkdir(exist_ok=True) + + for path in paths: + print(path) + try: + generate_file(path) + except: + e = sys.exc_info()[0] + print('problem with path', path) + print(e) + +if __name__ == '__main__': + main() -- cgit v1.2.3-70-g09d2