(self, input_data)
| 92 | self.register_buffer('inverse_basis', inverse_basis.float()) |
| 93 | |
| 94 | def transform(self, input_data): |
| 95 | num_batches = input_data.size(0) |
| 96 | num_samples = input_data.size(1) |
| 97 | |
| 98 | self.num_samples = num_samples |
| 99 | |
| 100 | # similar to librosa, reflect-pad the input |
| 101 | input_data = input_data.view(num_batches, 1, num_samples) |
| 102 | input_data = F.pad( |
| 103 | input_data.unsqueeze(1), |
| 104 | (int(self.filter_length / 2), int(self.filter_length / 2), 0, 0), |
| 105 | mode='reflect') |
| 106 | input_data = input_data.squeeze(1) |
| 107 | |
| 108 | forward_transform = F.conv1d( |
| 109 | input_data, |
| 110 | Variable(self.forward_basis, requires_grad=False), |
| 111 | stride=self.hop_length, |
| 112 | padding=0) |
| 113 | |
| 114 | cutoff = int((self.filter_length / 2) + 1) |
| 115 | real_part = forward_transform[:, :cutoff, :] |
| 116 | imag_part = forward_transform[:, cutoff:, :] |
| 117 | |
| 118 | magnitude = torch.sqrt(real_part**2 + imag_part**2) |
| 119 | phase = torch.autograd.Variable( |
| 120 | torch.atan2(imag_part.data, real_part.data)) |
| 121 | |
| 122 | return magnitude, phase |
| 123 | |
| 124 | def inverse(self, magnitude, phase): |
| 125 | recombine_magnitude_phase = torch.cat( |
no test coverage detected