inpro.synthesis.hts
Class VocodingAudioStream

java.lang.Object
  extended by marytts.util.data.BaseDoubleDataSource
      extended by inpro.synthesis.hts.VocodingAudioStream
All Implemented Interfaces:
java.lang.Runnable, marytts.util.data.DoubleDataSource

public class VocodingAudioStream
extends marytts.util.data.BaseDoubleDataSource
implements java.lang.Runnable

a vocoding thread that that can return immediately and from which the synthesized audio can be read while synthesis is still in progress; this class heavily relies on and borrows from HTSVocoder

Author:
timo

Field Summary
private  double alpha
           
private  double beta
           
private  double[] C
          used in the MLSA/MGLSA filter
private  double[] CC
          used in the MLSA/MGLSA filter
private  double[] CINC
          used in the MLSA/MGLSA filter
private  double[] D1
          used in the MLSA/MGLSA filter
(package private)  boolean doneVocoding
           
(package private)  boolean firstDelivery
           
private  boolean fourierMagnitudes
           
private  int fprd
          frame shift
(package private)  FullPStream fullPStream
           
private  double gamma
           
private  marytts.htsengine.HMMData htsData
           
private  double maxAmplitude
           
private  int mcepOrder
          mcepPst.getOrder()
private  boolean mixedExcitation
           
private  java.util.concurrent.ArrayBlockingQueue<java.lang.Double> output
          queue for the output samples
private  double p1
          used in excitation generation
private  double pc
          used in excitation generation
private  int pt2
          used in mlsadf2
private  int[] pt3
          used in mlsadf2
private  java.util.Random rand
           
private  int stage
          Gamma=-1/stage : if stage=0 then Gamma=0
private  boolean use_log_gain
           
 
Fields inherited from class marytts.util.data.BaseDoubleDataSource
dataLength, inputSource
 
Fields inherited from interface marytts.util.data.DoubleDataSource
NOT_SPECIFIED
 
Constructor Summary
VocodingAudioStream(FullPStream pstream, marytts.htsengine.HMMData htsData, boolean immediateReturn)
           
VocodingAudioStream(marytts.htsengine.HTSParameterGeneration pdf2par, marytts.htsengine.HMMData htsData, boolean immediateReturn)
           
VocodingAudioStream(marytts.htsengine.HTSPStream mcepPst, marytts.htsengine.HTSPStream strPst, marytts.htsengine.HTSPStream magPst, marytts.htsengine.HTSPStream lf0Pst, boolean[] voiced, marytts.htsengine.HMMData htsData, boolean immediateReturn)
           
 
Method Summary
 int available()
           
 int getData(double[] target, int targetPos, int length)
           
 long getDataLength()
           
 boolean hasMoreData()
           
private  void lsp2mgc(double[] lsp, double[] mgc)
          lsp2mgc: transform LSP to MGC.
 void run()
          incrementally vocode and generate output
private  double scale(double d)
           
 java.lang.String toString()
           
 
Methods inherited from class marytts.util.data.BaseDoubleDataSource
getAllData, getData, getData
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

rand

private final java.util.Random rand

htsData

private final marytts.htsengine.HMMData htsData

alpha

private final double alpha

beta

private final double beta

gamma

private final double gamma

stage

private final int stage
Gamma=-1/stage : if stage=0 then Gamma=0


use_log_gain

private final boolean use_log_gain

fprd

private final int fprd
frame shift


p1

private double p1
used in excitation generation


pc

private double pc
used in excitation generation


C

private double[] C
used in the MLSA/MGLSA filter


CC

private double[] CC
used in the MLSA/MGLSA filter


CINC

private double[] CINC
used in the MLSA/MGLSA filter


D1

private double[] D1
used in the MLSA/MGLSA filter


pt2

private final int pt2
used in mlsadf2


pt3

private final int[] pt3
used in mlsadf2


fullPStream

FullPStream fullPStream

mcepOrder

private final int mcepOrder
mcepPst.getOrder()


mixedExcitation

private final boolean mixedExcitation

fourierMagnitudes

private final boolean fourierMagnitudes

output

private final java.util.concurrent.ArrayBlockingQueue<java.lang.Double> output
queue for the output samples


maxAmplitude

private double maxAmplitude

doneVocoding

boolean doneVocoding

firstDelivery

boolean firstDelivery
Constructor Detail

VocodingAudioStream

public VocodingAudioStream(marytts.htsengine.HTSParameterGeneration pdf2par,
                           marytts.htsengine.HMMData htsData,
                           boolean immediateReturn)

VocodingAudioStream

public VocodingAudioStream(marytts.htsengine.HTSPStream mcepPst,
                           marytts.htsengine.HTSPStream strPst,
                           marytts.htsengine.HTSPStream magPst,
                           marytts.htsengine.HTSPStream lf0Pst,
                           boolean[] voiced,
                           marytts.htsengine.HMMData htsData,
                           boolean immediateReturn)

VocodingAudioStream

public VocodingAudioStream(FullPStream pstream,
                           marytts.htsengine.HMMData htsData,
                           boolean immediateReturn)
Method Detail

toString

public java.lang.String toString()
Overrides:
toString in class java.lang.Object

run

public void run()
incrementally vocode and generate output

Specified by:
run in interface java.lang.Runnable

lsp2mgc

private final void lsp2mgc(double[] lsp,
                           double[] mgc)
lsp2mgc: transform LSP to MGC. lsp=C[0..m] mgc=C[0..m]


available

public int available()
Specified by:
available in interface marytts.util.data.DoubleDataSource
Overrides:
available in class marytts.util.data.BaseDoubleDataSource

getDataLength

public long getDataLength()
Specified by:
getDataLength in interface marytts.util.data.DoubleDataSource
Overrides:
getDataLength in class marytts.util.data.BaseDoubleDataSource

hasMoreData

public boolean hasMoreData()
Specified by:
hasMoreData in interface marytts.util.data.DoubleDataSource
Overrides:
hasMoreData in class marytts.util.data.BaseDoubleDataSource

getData

public int getData(double[] target,
                   int targetPos,
                   int length)
Specified by:
getData in interface marytts.util.data.DoubleDataSource
Overrides:
getData in class marytts.util.data.BaseDoubleDataSource

scale

private final double scale(double d)