MCPcopy Create free account
hub / github.com/MoonInTheRiver/DiffSinger / PitchExtractor

Class PitchExtractor

modules/fastspeech/pe.py:119–149  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

117
118
119class PitchExtractor(nn.Module):
120 def __init__(self, n_mel_bins=80, conv_layers=2):
121 super().__init__()
122 self.hidden_size = hparams['hidden_size']
123 self.predictor_hidden = hparams['predictor_hidden'] if hparams['predictor_hidden'] > 0 else self.hidden_size
124 self.conv_layers = conv_layers
125
126 self.mel_prenet = Prenet(n_mel_bins, self.hidden_size, strides=[1, 1, 1])
127 if self.conv_layers > 0:
128 self.mel_encoder = ConvStacks(
129 idim=self.hidden_size, n_chans=self.hidden_size, odim=self.hidden_size, n_layers=self.conv_layers)
130 self.pitch_predictor = PitchPredictor(
131 self.hidden_size, n_chans=self.predictor_hidden,
132 n_layers=5, dropout_rate=0.1, odim=2,
133 padding=hparams['ffn_padding'], kernel_size=hparams['predictor_kernel'])
134
135 def forward(self, mel_input=None):
136 ret = {}
137 mel_hidden = self.mel_prenet(mel_input)[1]
138 if self.conv_layers > 0:
139 mel_hidden = self.mel_encoder(mel_hidden)
140
141 ret['pitch_pred'] = pitch_pred = self.pitch_predictor(mel_hidden)
142
143 pitch_padding = mel_input.abs().sum(-1) == 0
144 use_uv = hparams['pitch_type'] == 'frame' and hparams['use_uv']
145
146 ret['f0_denorm_pred'] = denorm_f0(
147 pitch_pred[:, :, 0], (pitch_pred[:, :, 1] > 0) if use_uv else None,
148 hparams, pitch_padding=pitch_padding)
149 return ret

Callers 3

__init__Method · 0.90
test_startMethod · 0.90
build_tts_modelMethod · 0.90

Calls

no outgoing calls

Tested by 1

test_startMethod · 0.72