示例#1
0
 def encode(self, wav, frame_len=0.025, frame_step=0.010):
     winfunc=lambda x:np.hamming(x).reshape((1,x))
     self.frame_len = int(frame_len * self.fs)
     self.frame_step = int(frame_step * self.fs)        
     wav = frame.preemphasis(wav,coeff=0.97)##       
     self.energy = frame.get_energy(wav, self.frame_len, self.frame_step, winfunc=winfunc)        
     
     self.frames = frame.framesig(wav, self.frame_len, self.frame_step, winfunc=winfunc)
     param_size = len(self._encode_frame(self.frames[0]))
     self.params = np.zeros((self.frames.shape[0], param_size))
     for i in range(self.frames.shape[0]):
         self.params[i, :] = self._encode_frame(self.frames[i])
示例#2
0
 def decode(self, src_signal):
     winfunc=lambda x:np.hamming(x).reshape((1,x))
     src_energy = frame.get_energy(src_signal, self.frame_len, self.frame_step)
     gain = self.energy / src_energy
     gain_interp = np.interp(np.linspace(0,1,src_signal.shape[0]), np.linspace(0, 1, gain.shape[0]), gain)
     src_signal *= gain_interp
     src_frames = frame.framesig(src_signal, self.frame_len, self.frame_step)
     
     for i in range(self.frames.shape[0]):
         self.frames[i, :] = self._decode_frame(self.params[i, :], np.r_[src_frames[max(0,i-1)],src_frames[i]])[self.frame_len:]
     wav = frame.deframesig(self.frames, src_signal.shape[0], self.frame_len, self.frame_step, winfunc=winfunc)
     wav = frame.deemphasis(wav,coeff=0.97)##
     #wav *= gain_interp
     return wav
示例#3
0
    def encode(self, wav, frame_len=0.025, frame_step=0.010):
        winfunc = lambda x: np.hamming(x).reshape((1, x))
        self.frame_len = int(frame_len * self.fs)
        self.frame_step = int(frame_step * self.fs)
        wav = frame.preemphasis(wav, coeff=0.97)  ##
        self.energy = frame.get_energy(wav,
                                       self.frame_len,
                                       self.frame_step,
                                       winfunc=winfunc)

        self.frames = frame.framesig(wav,
                                     self.frame_len,
                                     self.frame_step,
                                     winfunc=winfunc)
        param_size = len(self._encode_frame(self.frames[0]))
        self.params = np.zeros((self.frames.shape[0], param_size))
        for i in range(self.frames.shape[0]):
            self.params[i, :] = self._encode_frame(self.frames[i])
示例#4
0
    def decode(self, src_signal):
        winfunc = lambda x: np.hamming(x).reshape((1, x))
        src_energy = frame.get_energy(src_signal, self.frame_len,
                                      self.frame_step)
        gain = self.energy / src_energy
        gain_interp = np.interp(np.linspace(0, 1, src_signal.shape[0]),
                                np.linspace(0, 1, gain.shape[0]), gain)
        src_signal *= gain_interp
        src_frames = frame.framesig(src_signal, self.frame_len,
                                    self.frame_step)

        for i in range(self.frames.shape[0]):
            self.frames[i, :] = self._decode_frame(
                self.params[i, :], np.r_[src_frames[max(0, i - 1)],
                                         src_frames[i]])[self.frame_len:]
        wav = frame.deframesig(self.frames,
                               src_signal.shape[0],
                               self.frame_len,
                               self.frame_step,
                               winfunc=winfunc)
        wav = frame.deemphasis(wav, coeff=0.97)  ##
        #wav *= gain_interp
        return wav