summaryrefslogtreecommitdiff
path: root/become_yukarin/voice_changer.py
diff options
context:
space:
mode:
authorHiroshiba Kazuyuki <hihokaruta@gmail.com>2018-02-04 09:39:39 +0900
committerHiroshiba Kazuyuki <hihokaruta@gmail.com>2018-02-04 09:39:39 +0900
commit29f0994ea34f3df7dd5eea0b330d429b2e492211 (patch)
tree4c6827c3983ad7463f582c619db937e9f7e9f561 /become_yukarin/voice_changer.py
parent48addd22a87f248bb8041bca47e9c209a16175a4 (diff)
リアルタイム変換が可能
Diffstat (limited to 'become_yukarin/voice_changer.py')
-rw-r--r--become_yukarin/voice_changer.py12
1 files changed, 9 insertions, 3 deletions
diff --git a/become_yukarin/voice_changer.py b/become_yukarin/voice_changer.py
index 05f5a96..5e0eac0 100644
--- a/become_yukarin/voice_changer.py
+++ b/become_yukarin/voice_changer.py
@@ -83,7 +83,7 @@ class VoiceChangerStream(object):
def remove_wave(self, end_time: float):
self._data_stream = list(filter(lambda s: s.end_time > end_time, self._data_stream))
- def convert(self, start_time: float, time_length: float):
+ def convert_to_feature(self, start_time: float, time_length: float):
end_time = start_time + time_length
buffer_list = []
stream = filter(lambda s: not (end_time < s.start_time or s.end_time < start_time), self._data_stream)
@@ -121,12 +121,18 @@ class VoiceChangerStream(object):
buffer_list.append(pad)
buffer = numpy.concatenate(buffer_list)
- print('buffer', len(buffer), flush=True)
in_wave = Wave(wave=buffer, sampling_rate=self.sampling_rate)
in_feature = self.vocoder.encode(in_wave)
out_feature = self.voice_changer.convert_from_acoustic_feature(in_feature)
return out_feature
+ def convert(self, start_time: float, time_length: float):
+ feature = self.convert_to_feature(start_time=start_time, time_length=time_length)
+ out_wave = self.vocoder.decode(
+ acoustic_feature=feature,
+ )
+ return out_wave
+
def convert_with_extra_time(self, start_time: float, time_length: float, extra_time: float):
"""
:param extra_time: 音声変換時に余分に使うデータの時間長。ゼロパディングを防ぐ。
@@ -136,7 +142,7 @@ class VoiceChangerStream(object):
start_time -= extra_time
time_length += extra_time * 2
- extra_feature = self.convert(start_time=start_time, time_length=time_length)
+ extra_feature = self.convert_to_feature(start_time=start_time, time_length=time_length)
pad = int(extra_time / (frame_period / 1000))
feature = AcousticFeature(