torch crossfade update

This commit is contained in:
wataru 2023-01-12 17:01:57 +09:00
parent c1c3b863b9
commit 5479422e1f

View File

@ -240,10 +240,17 @@ class VoiceChanger():
print(f"cur_strength move from {self.cur_strength.device} to cpu") print(f"cur_strength move from {self.cur_strength.device} to cpu")
self.cur_strength = self.cur_strength.cpu() self.cur_strength = self.cur_strength.cpu()
if hasattr(self, 'prev_audio1') == True and self.prev_audio1.device == torch.device('cpu'): if hasattr(self, 'prev_audio1') == True and self.prev_audio1.device == torch.device('cpu'): # prev_audio1が所望のデバイスに無い場合は一回休み。
prev = self.prev_audio1[-1*inputSize:] overlapSize = int(inputSize * self.settings.crossFadeOverlapRate)
cur = audio1[-2*inputSize:-1*inputSize] prev_overlap = self.prev_audio1[-1*overlapSize:]
result = prev * self.prev_strength + cur * self.cur_strength cur_overlap = audio1[-1*(inputSize + overlapSize) :-1*inputSize]
powered_prev = prev_overlap * self.prev_strength
powered_cur = cur_overlap * self.cur_strength
powered_result = powered_prev + powered_cur
cur = audio1[-1*inputSize:-1*overlapSize] # 今回のインプットの生部分。(インプット - 次回のCrossfade部分)。
result = torch.cat([powered_result, cur],axis=0) # Crossfadeと今回のインプットの生部分を結合
else: else:
cur = audio1[-2*inputSize:-1*inputSize] cur = audio1[-2*inputSize:-1*inputSize]
result = cur result = cur
@ -267,17 +274,21 @@ class VoiceChanger():
if hasattr(self, 'prev_audio1') == True and self.prev_audio1.device == torch.device('cuda', self.settings.gpu): if hasattr(self, 'prev_audio1') == True and self.prev_audio1.device == torch.device('cuda', self.settings.gpu):
prev = self.prev_audio1[-1*inputSize:] overlapSize = int(inputSize * self.settings.crossFadeOverlapRate)
cur = audio1[-2*inputSize:-1*inputSize] prev_overlap = self.prev_audio1[-1*overlapSize:]
result = prev * self.prev_strength + cur * self.cur_strength cur_overlap = audio1[-1*(inputSize + overlapSize) :-1*inputSize]
# print("merging...", prev.shape, cur.shape) powered_prev = prev_overlap * self.prev_strength
powered_cur = cur_overlap * self.cur_strength
powered_result = powered_prev + powered_cur
cur = audio1[-1*inputSize:-1*overlapSize] # 今回のインプットの生部分。(インプット - 次回のCrossfade部分)。
result = torch.cat([powered_result, cur],axis=0) # Crossfadeと今回のインプットの生部分を結合
else: else:
cur = audio1[-2*inputSize:-1*inputSize] cur = audio1[-2*inputSize:-1*inputSize]
result = cur result = cur
# print("no merging...", cur.shape)
self.prev_audio1 = audio1 self.prev_audio1 = audio1
#print(result)
result = result.cpu().float().numpy() result = result.cpu().float().numpy()
return result return result