/** * Copyright 2007 DFKI GmbH. * All Rights Reserved. Use is subject to license terms. * * This file is part of MARY TTS. * * MARY TTS is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation, version 3 of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. * */ package marytts.signalproc.sinusoidal; import marytts.util.math.ComplexArray; /** * Single speech frame sinusoids with spectrum * * @author Oytun Türk */ public class NonharmonicSinusoidalSpeechFrame extends BaseSinusoidalSpeechFrame { public Sinusoid[] sinusoids; public double[] systemAmps; public double[] systemPhases; public float[] systemCeps; public ComplexArray frameDfts; public float time; public float voicing; public float maxFreqOfVoicing; public NonharmonicSinusoidalSpeechFrame(int numSins) { if (numSins > 0) sinusoids = new Sinusoid[numSins]; else sinusoids = null; systemAmps = null; systemPhases = null; systemCeps = null; frameDfts = null; time = -1.0f; voicing = -1.0f; maxFreqOfVoicing = -1.0f; } public NonharmonicSinusoidalSpeechFrame(NonharmonicSinusoidalSpeechFrame existing) { this(existing.sinusoids.length); for (int i = 0; i < existing.sinusoids.length; i++) sinusoids[i] = new Sinusoid(existing.sinusoids[i]); setSystemAmps(existing.systemAmps); setSystemPhases(existing.systemPhases); setSystemCeps(existing.systemCeps); setFrameDfts(existing.frameDfts); time = existing.time; voicing = existing.voicing; maxFreqOfVoicing = existing.maxFreqOfVoicing; } public void setSystemAmps(double[] newAmps) { if (newAmps != null && newAmps.length > 0) { systemAmps = new double[newAmps.length]; System.arraycopy(newAmps, 0, systemAmps, 0, newAmps.length); } else systemAmps = null; } public void setSystemPhases(double[] newPhases) { if (newPhases != null && newPhases.length > 0) { systemPhases = new double[newPhases.length]; System.arraycopy(newPhases, 0, systemPhases, 0, newPhases.length); } else systemPhases = null; } public void setSystemCeps(float[] newCeps) { if (newCeps != null && newCeps.length > 0) { systemCeps = new float[newCeps.length]; System.arraycopy(newCeps, 0, systemCeps, 0, newCeps.length); } else systemCeps = null; } public void setFrameDfts(ComplexArray newDfts) { if (newDfts != null) frameDfts = new ComplexArray(newDfts); else frameDfts = null; } }