summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--NOTES26
-rw-r--r--docs/HOLLY SPEAKING.md17
-rw-r--r--docs/HOLLY VOICE.md53
-rw-r--r--scripts/extract_spectrogram_pair_singlethread.py90
4 files changed, 174 insertions, 12 deletions
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
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()