Loading FFNet/FFNet.cpp +4 −4 Original line number Diff line number Diff line /* FFNet.cpp * * Copyright (C) 1997-2018 David Weenink * Copyright (C) 1997-2019 David Weenink * * This code is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by Loading Loading @@ -630,7 +630,7 @@ void FFNet_drawActivation (FFNet me, Graphics g) { } /* This routine is deprecated since praat-4.2.4 20040422 and will be removed in the future. */ void FFNet_drawWeightsToLayer (FFNet me, Graphics g, int layer, int scaling, int garnish) { void FFNet_drawWeightsToLayer (FFNet me, Graphics g, int layer, int scaling, bool garnish) { Melder_require (layer > 0 && layer <= my numberOfLayers, U"Layer number should be between 1 and ", my numberOfLayers, U"."); autoMatrix weights = FFNet_weightsToMatrix (me, layer, false); Loading @@ -653,12 +653,12 @@ void FFNet_drawWeightsToLayer (FFNet me, Graphics g, int layer, int scaling, int } } void FFNet_drawWeights (FFNet me, Graphics g, integer layer, int garnish) { void FFNet_drawWeights (FFNet me, Graphics g, integer layer, bool garnish) { autoTableOfReal thee = FFNet_extractWeights (me, layer); TableOfReal_drawAsSquares (thee.get(), g, 1, thy numberOfRows, 1, thy numberOfColumns, garnish); } void FFNet_drawCostHistory (FFNet me, Graphics g, integer iFrom, integer iTo, double costMin, double costMax, int garnish) { void FFNet_drawCostHistory (FFNet me, Graphics g, integer iFrom, integer iTo, double costMin, double costMax, bool garnish) { if (my minimizer) Minimizer_drawHistory (my minimizer.get(), g, iFrom, iTo, costMin, costMax, 0); Loading FFNet/FFNet.h +4 −4 Original line number Diff line number Diff line Loading @@ -2,7 +2,7 @@ #define _FFNet_h_ /* FFNet.h * * Copyright (C) 1997-2018 David Weenink * Copyright (C) 1997-2019 David Weenink * * This code is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by Loading Loading @@ -210,20 +210,20 @@ void FFNet_drawTopology (FFNet me, Graphics g); void FFNet_drawActivation (FFNet me, Graphics g); void FFNet_drawWeightsToLayer (FFNet me, Graphics g, int toLayer, int scaling, int garnish); void FFNet_drawWeightsToLayer (FFNet me, Graphics g, int toLayer, int scaling, bool garnish); /* Deprecated: the strengths of the weights that connect to the nodes in later 'layer' */ /* are drawn with boxes. The area of each box corresponds to the strength. */ /* Black boxes have negative strength? */ void FFNet_drawCostHistory (FFNet me, Graphics g, integer from_iteration, integer to_iteration, double from_cost, double to_cost, int garnish); double from_cost, double to_cost, bool garnish); /* draw cost vs epochs */ autoCollection FFNet_createIrisExample (integer numberOfHidden1, integer numberOfHidden2); autoTableOfReal FFNet_extractWeights (FFNet me, integer layer); void FFNet_drawWeights (FFNet me, Graphics g, integer layer, int garnish); void FFNet_drawWeights (FFNet me, Graphics g, integer layer, bool garnish); autoFFNet FFNet_TabelOfReal_to_FFNet (FFNet me, TableOfReal him, integer layer); Loading FFNet/manual_FFNet.cpp +1 −1 Original line number Diff line number Diff line /* manual_FFNet.c * * Copyright (C) 1994-2013, 2016 David Weenink * Copyright (C) 1994-2019 David Weenink * * This code is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by Loading LPC/Cepstrogram.cpp +20 −13 Original line number Diff line number Diff line /* Cepstrogram.cpp * * Copyright (C) 2013 - 2017 David Weenink * Copyright (C) 2013 - 2019 David Weenink * * This code is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by Loading Loading @@ -29,6 +29,12 @@ #include "Sound_and_Spectrum.h" #include "Sound_extensions.h" #include "enums_getText.h" #include "Cepstrum_enums.h" #include "enums_getValue.h" #include "Cepstrum_enums.h" #define TOLOG(x) ((1 / NUMln10) * log ((x) + 1e-30)) #define TO10LOG(x) ((10 / NUMln10) * log ((x) + 1e-30)) #define FROMLOG(x) (exp ((x) * (NUMln10 / 10.0)) - 1e-30) Loading Loading @@ -58,7 +64,7 @@ autoPowerCepstrogram PowerCepstrogram_create (double tmin, double tmax, integer } } void PowerCepstrogram_paint (PowerCepstrogram me, Graphics g, double tmin, double tmax, double qmin, double qmax, double dBmaximum, int autoscaling, double dynamicRangedB, double dynamicCompression, int garnish) { void PowerCepstrogram_paint (PowerCepstrogram me, Graphics g, double tmin, double tmax, double qmin, double qmax, double dBmaximum, int autoscaling, double dynamicRangedB, double dynamicCompression, bool garnish) { if (tmax <= tmin) { tmin = my xmin; tmax = my xmax; } if (qmax <= qmin) { qmin = my ymin; qmax = my ymax; } integer itmin, itmax, ifmin, ifmax; Loading Loading @@ -112,12 +118,12 @@ void PowerCepstrogram_paint (PowerCepstrogram me, Graphics g, double tmin, doubl } } void PowerCepstrogram_subtractTilt_inplace (PowerCepstrogram me, double qstartFit, double qendFit, int lineType, int fitMethod) { void PowerCepstrogram_subtractTrend_inplace (PowerCepstrogram me, double qstartFit, double qendFit, kCepstrumTrendType lineType, kCepstrumTrendFit fitMethod) { try { autoPowerCepstrum thee = PowerCepstrum_create (my ymax, my ny); for (integer i = 1; i <= my nx; i ++) { thy z.row (1) <<= my z.column (i); PowerCepstrum_subtractTilt_inplace (thee.get(), qstartFit, qendFit, lineType, fitMethod); PowerCepstrum_subtractTrend_inplace (thee.get(), qstartFit, qendFit, lineType, fitMethod); my z.column (i) <<= thy z.row (1); } } catch (MelderError) { Loading @@ -125,10 +131,10 @@ void PowerCepstrogram_subtractTilt_inplace (PowerCepstrogram me, double qstartFi } } autoPowerCepstrogram PowerCepstrogram_subtractTilt (PowerCepstrogram me, double qstartFit, double qendFit, int lineType, int fitMethod) { autoPowerCepstrogram PowerCepstrogram_subtractTrend (PowerCepstrogram me, double qstartFit, double qendFit, kCepstrumTrendType lineType, kCepstrumTrendFit fitMethod) { try { autoPowerCepstrogram thee = Data_copy (me); PowerCepstrogram_subtractTilt_inplace (thee.get(), qstartFit, qendFit, lineType, fitMethod); PowerCepstrogram_subtractTrend_inplace (thee.get(), qstartFit, qendFit, lineType, fitMethod); return thee; } catch (MelderError) { Melder_throw (me, U": no tilt subtracted."); Loading @@ -155,7 +161,7 @@ autoTable PowerCepstrogram_to_Table_hillenbrand (PowerCepstrogram me, double pit } } autoTable PowerCepstrogram_to_Table_cpp (PowerCepstrogram me, double pitchFloor, double pitchCeiling, double deltaF0, int interpolation, double qstartFit, double qendFit, int lineType, int fitMethod) { autoTable PowerCepstrogram_to_Table_cpp (PowerCepstrogram me, double pitchFloor, double pitchCeiling, double deltaF0, int interpolation, double qstartFit, double qendFit, kCepstrumTrendType lineType, kCepstrumTrendFit fitMethod) { try { autoTable thee = Table_createWithColumnNames (my nx, U"time quefrency cpp f0 rnr"); autoPowerCepstrum him = PowerCepstrum_create (my ymax, my ny); Loading Loading @@ -347,13 +353,14 @@ autoPowerCepstrogram Sound_to_PowerCepstrogram_hillenbrand (Sound me, double pit thy z [1] [i] -= 0.9 * thy z [1] [i - 1]; integer nosInWindow = Melder_ifloor (analysisWidth * samplingFrequency), numberOfFrames; Melder_require (nosInWindow >= 8, U"Analysis window too short."); Melder_require (nosInWindow >= 8, U"Analysis window too short."); double t1; Sampled_shortTermAnalysis (thee.get(), analysisWidth, dt, & numberOfFrames, & t1); autoVEC hamming = newVECraw (nosInWindow); for (integer i = 1; i <= nosInWindow; i ++) hamming [i] = 0.54 - 0.46 * cos (2.0 * NUMpi * (i - 1) / (nosInWindow - 1)); hamming [i] = 0.54 - 0.46 * cos (NUM2pi * (i - 1) / (nosInWindow - 1)); integer nfft = 8; // minimum possible while (nfft < nosInWindow) { nfft *= 2; } Loading Loading @@ -406,11 +413,11 @@ autoPowerCepstrogram Sound_to_PowerCepstrogram_hillenbrand (Sound me, double pit } } double PowerCepstrogram_getCPPS (PowerCepstrogram me, bool subtractTiltBeforeSmoothing, double timeAveragingWindow, double quefrencyAveragingWindow, double pitchFloor, double pitchCeiling, double deltaF0, int interpolation, double qstartFit, double qendFit, int lineType, int fitMethod) { double PowerCepstrogram_getCPPS (PowerCepstrogram me, bool subtractTiltBeforeSmoothing, double timeAveragingWindow, double quefrencyAveragingWindow, double pitchFloor, double pitchCeiling, double deltaF0, int interpolation, double qstartFit, double qendFit, kCepstrumTrendType lineType, kCepstrumTrendFit fitMethod) { try { autoPowerCepstrogram flattened; if (subtractTiltBeforeSmoothing) flattened = PowerCepstrogram_subtractTilt (me, qstartFit, qendFit, lineType, fitMethod); flattened = PowerCepstrogram_subtractTrend (me, qstartFit, qendFit, lineType, fitMethod); autoPowerCepstrogram smooth = PowerCepstrogram_smooth (flattened ? flattened.get() : me, timeAveragingWindow, quefrencyAveragingWindow); autoTable table = PowerCepstrogram_to_Table_cpp (smooth.get(), pitchFloor, pitchCeiling, deltaF0, interpolation, qstartFit, qendFit, lineType, fitMethod); Loading @@ -425,7 +432,7 @@ double PowerCepstrogram_getCPPS_hillenbrand (PowerCepstrogram me, bool subtractT try { autoPowerCepstrogram him; if (subtractTiltBeforeSmoothing) him = PowerCepstrogram_subtractTilt (me, 0.001, 0, 1, 1); him = PowerCepstrogram_subtractTrend (me, 0.001, 0, kCepstrumTrendType::Linear, kCepstrumTrendFit::LeastSquares); autoPowerCepstrogram smooth = PowerCepstrogram_smooth (subtractTiltBeforeSmoothing ? him.get() : me, timeAveragingWindow, quefrencyAveragingWindow); autoTable table = PowerCepstrogram_to_Table_hillenbrand (smooth.get(), pitchFloor, pitchCeiling); Loading LPC/Cepstrogram.h +7 −6 Original line number Diff line number Diff line Loading @@ -2,7 +2,7 @@ #define _Cepstrogram_h_ /* Cepstrogram.h * * Copyright (C) 2012-2017 David Weenink * Copyright (C) 2012-2019 David Weenink * * This code is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by Loading Loading @@ -37,6 +37,7 @@ Thing_define (Cepstrogram, Matrix) { }; Thing_define (PowerCepstrogram, Cepstrogram) { }; /* xmin, xmax : time domain nx, dx, x1 : sampling in the time domain Loading @@ -52,7 +53,7 @@ autoCepstrogram Cepstrogram_create (double tmin, double tmax, integer nt, double autoPowerCepstrogram PowerCepstrogram_create (double tmin, double tmax, integer nt, double dt, double t1, double qmin, double qmax, integer nq, double dq, double q1); void PowerCepstrogram_paint (PowerCepstrogram me, Graphics g, double tmin, double tmax, double qmin, double qmax, double dBmaximum, int autoscaling, double dynamicRangedB, double dynamicCompression, int garnish); void PowerCepstrogram_paint (PowerCepstrogram me, Graphics g, double tmin, double tmax, double qmin, double qmax, double dBmaximum, int autoscaling, double dynamicRangedB, double dynamicCompression, bool garnish); autoPowerCepstrogram PowerCepstrogram_smooth (PowerCepstrogram me, double timeAveragingWindow, double quefrencyAveragingWindow); Loading @@ -62,17 +63,17 @@ autoPowerCepstrogram Sound_to_PowerCepstrogram_hillenbrand (Sound me, double ana autoTable PowerCepstrogram_to_Table_hillenbrand (PowerCepstrogram me, double pitchFloor, double pitchCeiling); autoTable PowerCepstrogram_to_Table_cpp (PowerCepstrogram me, double pitchFloor, double pitchCeiling, double deltaF0, int interpolation, double qstartFit, double qendFit, int lineType, int method); autoTable PowerCepstrogram_to_Table_cpp (PowerCepstrogram me, double pitchFloor, double pitchCeiling, double deltaF0, int interpolation, double qstartFit, double qendFit, kCepstrumTrendType lineType, kCepstrumTrendFit method); autoPowerCepstrum PowerCepstrogram_to_PowerCepstrum_slice (PowerCepstrogram me, double time); autoPowerCepstrogram PowerCepstrogram_subtractTilt (PowerCepstrogram me, double qstartFit, double qendFit, int lineType, int fitMethod); autoPowerCepstrogram PowerCepstrogram_subtractTrend (PowerCepstrogram me, double qstartFit, double qendFit, kCepstrumTrendType lineType, kCepstrumTrendFit fitMethod); void PowerCepstrogram_subtractTilt_inplace (PowerCepstrogram me, double qstartFit, double qendFit, int lineType, int fitMethod); void PowerCepstrogram_subtractTrend_inplace (PowerCepstrogram me, double qstartFit, double qendFit, kCepstrumTrendType lineType, kCepstrumTrendFit fitMethod); double PowerCepstrogram_getCPPS_hillenbrand (PowerCepstrogram me, bool subtractTiltBeforeSmoothing, double timeAveragingWindow, double quefrencyAveragingWindow, double pitchFloor, double pitchCeiling); double PowerCepstrogram_getCPPS (PowerCepstrogram me, bool subtractTiltBeforeSmoothing, double timeAveragingWindow, double quefrencyAveragingWindow, double pitchFloor, double pitchCeiling, double deltaF0, int interpolation, double qstartFit, double qendFit, int lineType, int fitMethod); double PowerCepstrogram_getCPPS (PowerCepstrogram me, bool subtractTiltBeforeSmoothing, double timeAveragingWindow, double quefrencyAveragingWindow, double pitchFloor, double pitchCeiling, double deltaF0, int interpolation, double qstartFit, double qendFit, kCepstrumTrendType lineType, kCepstrumTrendFit fitMethod); autoMatrix PowerCepstrogram_to_Matrix (PowerCepstrogram me); Loading Loading
FFNet/FFNet.cpp +4 −4 Original line number Diff line number Diff line /* FFNet.cpp * * Copyright (C) 1997-2018 David Weenink * Copyright (C) 1997-2019 David Weenink * * This code is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by Loading Loading @@ -630,7 +630,7 @@ void FFNet_drawActivation (FFNet me, Graphics g) { } /* This routine is deprecated since praat-4.2.4 20040422 and will be removed in the future. */ void FFNet_drawWeightsToLayer (FFNet me, Graphics g, int layer, int scaling, int garnish) { void FFNet_drawWeightsToLayer (FFNet me, Graphics g, int layer, int scaling, bool garnish) { Melder_require (layer > 0 && layer <= my numberOfLayers, U"Layer number should be between 1 and ", my numberOfLayers, U"."); autoMatrix weights = FFNet_weightsToMatrix (me, layer, false); Loading @@ -653,12 +653,12 @@ void FFNet_drawWeightsToLayer (FFNet me, Graphics g, int layer, int scaling, int } } void FFNet_drawWeights (FFNet me, Graphics g, integer layer, int garnish) { void FFNet_drawWeights (FFNet me, Graphics g, integer layer, bool garnish) { autoTableOfReal thee = FFNet_extractWeights (me, layer); TableOfReal_drawAsSquares (thee.get(), g, 1, thy numberOfRows, 1, thy numberOfColumns, garnish); } void FFNet_drawCostHistory (FFNet me, Graphics g, integer iFrom, integer iTo, double costMin, double costMax, int garnish) { void FFNet_drawCostHistory (FFNet me, Graphics g, integer iFrom, integer iTo, double costMin, double costMax, bool garnish) { if (my minimizer) Minimizer_drawHistory (my minimizer.get(), g, iFrom, iTo, costMin, costMax, 0); Loading
FFNet/FFNet.h +4 −4 Original line number Diff line number Diff line Loading @@ -2,7 +2,7 @@ #define _FFNet_h_ /* FFNet.h * * Copyright (C) 1997-2018 David Weenink * Copyright (C) 1997-2019 David Weenink * * This code is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by Loading Loading @@ -210,20 +210,20 @@ void FFNet_drawTopology (FFNet me, Graphics g); void FFNet_drawActivation (FFNet me, Graphics g); void FFNet_drawWeightsToLayer (FFNet me, Graphics g, int toLayer, int scaling, int garnish); void FFNet_drawWeightsToLayer (FFNet me, Graphics g, int toLayer, int scaling, bool garnish); /* Deprecated: the strengths of the weights that connect to the nodes in later 'layer' */ /* are drawn with boxes. The area of each box corresponds to the strength. */ /* Black boxes have negative strength? */ void FFNet_drawCostHistory (FFNet me, Graphics g, integer from_iteration, integer to_iteration, double from_cost, double to_cost, int garnish); double from_cost, double to_cost, bool garnish); /* draw cost vs epochs */ autoCollection FFNet_createIrisExample (integer numberOfHidden1, integer numberOfHidden2); autoTableOfReal FFNet_extractWeights (FFNet me, integer layer); void FFNet_drawWeights (FFNet me, Graphics g, integer layer, int garnish); void FFNet_drawWeights (FFNet me, Graphics g, integer layer, bool garnish); autoFFNet FFNet_TabelOfReal_to_FFNet (FFNet me, TableOfReal him, integer layer); Loading
FFNet/manual_FFNet.cpp +1 −1 Original line number Diff line number Diff line /* manual_FFNet.c * * Copyright (C) 1994-2013, 2016 David Weenink * Copyright (C) 1994-2019 David Weenink * * This code is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by Loading
LPC/Cepstrogram.cpp +20 −13 Original line number Diff line number Diff line /* Cepstrogram.cpp * * Copyright (C) 2013 - 2017 David Weenink * Copyright (C) 2013 - 2019 David Weenink * * This code is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by Loading Loading @@ -29,6 +29,12 @@ #include "Sound_and_Spectrum.h" #include "Sound_extensions.h" #include "enums_getText.h" #include "Cepstrum_enums.h" #include "enums_getValue.h" #include "Cepstrum_enums.h" #define TOLOG(x) ((1 / NUMln10) * log ((x) + 1e-30)) #define TO10LOG(x) ((10 / NUMln10) * log ((x) + 1e-30)) #define FROMLOG(x) (exp ((x) * (NUMln10 / 10.0)) - 1e-30) Loading Loading @@ -58,7 +64,7 @@ autoPowerCepstrogram PowerCepstrogram_create (double tmin, double tmax, integer } } void PowerCepstrogram_paint (PowerCepstrogram me, Graphics g, double tmin, double tmax, double qmin, double qmax, double dBmaximum, int autoscaling, double dynamicRangedB, double dynamicCompression, int garnish) { void PowerCepstrogram_paint (PowerCepstrogram me, Graphics g, double tmin, double tmax, double qmin, double qmax, double dBmaximum, int autoscaling, double dynamicRangedB, double dynamicCompression, bool garnish) { if (tmax <= tmin) { tmin = my xmin; tmax = my xmax; } if (qmax <= qmin) { qmin = my ymin; qmax = my ymax; } integer itmin, itmax, ifmin, ifmax; Loading Loading @@ -112,12 +118,12 @@ void PowerCepstrogram_paint (PowerCepstrogram me, Graphics g, double tmin, doubl } } void PowerCepstrogram_subtractTilt_inplace (PowerCepstrogram me, double qstartFit, double qendFit, int lineType, int fitMethod) { void PowerCepstrogram_subtractTrend_inplace (PowerCepstrogram me, double qstartFit, double qendFit, kCepstrumTrendType lineType, kCepstrumTrendFit fitMethod) { try { autoPowerCepstrum thee = PowerCepstrum_create (my ymax, my ny); for (integer i = 1; i <= my nx; i ++) { thy z.row (1) <<= my z.column (i); PowerCepstrum_subtractTilt_inplace (thee.get(), qstartFit, qendFit, lineType, fitMethod); PowerCepstrum_subtractTrend_inplace (thee.get(), qstartFit, qendFit, lineType, fitMethod); my z.column (i) <<= thy z.row (1); } } catch (MelderError) { Loading @@ -125,10 +131,10 @@ void PowerCepstrogram_subtractTilt_inplace (PowerCepstrogram me, double qstartFi } } autoPowerCepstrogram PowerCepstrogram_subtractTilt (PowerCepstrogram me, double qstartFit, double qendFit, int lineType, int fitMethod) { autoPowerCepstrogram PowerCepstrogram_subtractTrend (PowerCepstrogram me, double qstartFit, double qendFit, kCepstrumTrendType lineType, kCepstrumTrendFit fitMethod) { try { autoPowerCepstrogram thee = Data_copy (me); PowerCepstrogram_subtractTilt_inplace (thee.get(), qstartFit, qendFit, lineType, fitMethod); PowerCepstrogram_subtractTrend_inplace (thee.get(), qstartFit, qendFit, lineType, fitMethod); return thee; } catch (MelderError) { Melder_throw (me, U": no tilt subtracted."); Loading @@ -155,7 +161,7 @@ autoTable PowerCepstrogram_to_Table_hillenbrand (PowerCepstrogram me, double pit } } autoTable PowerCepstrogram_to_Table_cpp (PowerCepstrogram me, double pitchFloor, double pitchCeiling, double deltaF0, int interpolation, double qstartFit, double qendFit, int lineType, int fitMethod) { autoTable PowerCepstrogram_to_Table_cpp (PowerCepstrogram me, double pitchFloor, double pitchCeiling, double deltaF0, int interpolation, double qstartFit, double qendFit, kCepstrumTrendType lineType, kCepstrumTrendFit fitMethod) { try { autoTable thee = Table_createWithColumnNames (my nx, U"time quefrency cpp f0 rnr"); autoPowerCepstrum him = PowerCepstrum_create (my ymax, my ny); Loading Loading @@ -347,13 +353,14 @@ autoPowerCepstrogram Sound_to_PowerCepstrogram_hillenbrand (Sound me, double pit thy z [1] [i] -= 0.9 * thy z [1] [i - 1]; integer nosInWindow = Melder_ifloor (analysisWidth * samplingFrequency), numberOfFrames; Melder_require (nosInWindow >= 8, U"Analysis window too short."); Melder_require (nosInWindow >= 8, U"Analysis window too short."); double t1; Sampled_shortTermAnalysis (thee.get(), analysisWidth, dt, & numberOfFrames, & t1); autoVEC hamming = newVECraw (nosInWindow); for (integer i = 1; i <= nosInWindow; i ++) hamming [i] = 0.54 - 0.46 * cos (2.0 * NUMpi * (i - 1) / (nosInWindow - 1)); hamming [i] = 0.54 - 0.46 * cos (NUM2pi * (i - 1) / (nosInWindow - 1)); integer nfft = 8; // minimum possible while (nfft < nosInWindow) { nfft *= 2; } Loading Loading @@ -406,11 +413,11 @@ autoPowerCepstrogram Sound_to_PowerCepstrogram_hillenbrand (Sound me, double pit } } double PowerCepstrogram_getCPPS (PowerCepstrogram me, bool subtractTiltBeforeSmoothing, double timeAveragingWindow, double quefrencyAveragingWindow, double pitchFloor, double pitchCeiling, double deltaF0, int interpolation, double qstartFit, double qendFit, int lineType, int fitMethod) { double PowerCepstrogram_getCPPS (PowerCepstrogram me, bool subtractTiltBeforeSmoothing, double timeAveragingWindow, double quefrencyAveragingWindow, double pitchFloor, double pitchCeiling, double deltaF0, int interpolation, double qstartFit, double qendFit, kCepstrumTrendType lineType, kCepstrumTrendFit fitMethod) { try { autoPowerCepstrogram flattened; if (subtractTiltBeforeSmoothing) flattened = PowerCepstrogram_subtractTilt (me, qstartFit, qendFit, lineType, fitMethod); flattened = PowerCepstrogram_subtractTrend (me, qstartFit, qendFit, lineType, fitMethod); autoPowerCepstrogram smooth = PowerCepstrogram_smooth (flattened ? flattened.get() : me, timeAveragingWindow, quefrencyAveragingWindow); autoTable table = PowerCepstrogram_to_Table_cpp (smooth.get(), pitchFloor, pitchCeiling, deltaF0, interpolation, qstartFit, qendFit, lineType, fitMethod); Loading @@ -425,7 +432,7 @@ double PowerCepstrogram_getCPPS_hillenbrand (PowerCepstrogram me, bool subtractT try { autoPowerCepstrogram him; if (subtractTiltBeforeSmoothing) him = PowerCepstrogram_subtractTilt (me, 0.001, 0, 1, 1); him = PowerCepstrogram_subtractTrend (me, 0.001, 0, kCepstrumTrendType::Linear, kCepstrumTrendFit::LeastSquares); autoPowerCepstrogram smooth = PowerCepstrogram_smooth (subtractTiltBeforeSmoothing ? him.get() : me, timeAveragingWindow, quefrencyAveragingWindow); autoTable table = PowerCepstrogram_to_Table_hillenbrand (smooth.get(), pitchFloor, pitchCeiling); Loading
LPC/Cepstrogram.h +7 −6 Original line number Diff line number Diff line Loading @@ -2,7 +2,7 @@ #define _Cepstrogram_h_ /* Cepstrogram.h * * Copyright (C) 2012-2017 David Weenink * Copyright (C) 2012-2019 David Weenink * * This code is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by Loading Loading @@ -37,6 +37,7 @@ Thing_define (Cepstrogram, Matrix) { }; Thing_define (PowerCepstrogram, Cepstrogram) { }; /* xmin, xmax : time domain nx, dx, x1 : sampling in the time domain Loading @@ -52,7 +53,7 @@ autoCepstrogram Cepstrogram_create (double tmin, double tmax, integer nt, double autoPowerCepstrogram PowerCepstrogram_create (double tmin, double tmax, integer nt, double dt, double t1, double qmin, double qmax, integer nq, double dq, double q1); void PowerCepstrogram_paint (PowerCepstrogram me, Graphics g, double tmin, double tmax, double qmin, double qmax, double dBmaximum, int autoscaling, double dynamicRangedB, double dynamicCompression, int garnish); void PowerCepstrogram_paint (PowerCepstrogram me, Graphics g, double tmin, double tmax, double qmin, double qmax, double dBmaximum, int autoscaling, double dynamicRangedB, double dynamicCompression, bool garnish); autoPowerCepstrogram PowerCepstrogram_smooth (PowerCepstrogram me, double timeAveragingWindow, double quefrencyAveragingWindow); Loading @@ -62,17 +63,17 @@ autoPowerCepstrogram Sound_to_PowerCepstrogram_hillenbrand (Sound me, double ana autoTable PowerCepstrogram_to_Table_hillenbrand (PowerCepstrogram me, double pitchFloor, double pitchCeiling); autoTable PowerCepstrogram_to_Table_cpp (PowerCepstrogram me, double pitchFloor, double pitchCeiling, double deltaF0, int interpolation, double qstartFit, double qendFit, int lineType, int method); autoTable PowerCepstrogram_to_Table_cpp (PowerCepstrogram me, double pitchFloor, double pitchCeiling, double deltaF0, int interpolation, double qstartFit, double qendFit, kCepstrumTrendType lineType, kCepstrumTrendFit method); autoPowerCepstrum PowerCepstrogram_to_PowerCepstrum_slice (PowerCepstrogram me, double time); autoPowerCepstrogram PowerCepstrogram_subtractTilt (PowerCepstrogram me, double qstartFit, double qendFit, int lineType, int fitMethod); autoPowerCepstrogram PowerCepstrogram_subtractTrend (PowerCepstrogram me, double qstartFit, double qendFit, kCepstrumTrendType lineType, kCepstrumTrendFit fitMethod); void PowerCepstrogram_subtractTilt_inplace (PowerCepstrogram me, double qstartFit, double qendFit, int lineType, int fitMethod); void PowerCepstrogram_subtractTrend_inplace (PowerCepstrogram me, double qstartFit, double qendFit, kCepstrumTrendType lineType, kCepstrumTrendFit fitMethod); double PowerCepstrogram_getCPPS_hillenbrand (PowerCepstrogram me, bool subtractTiltBeforeSmoothing, double timeAveragingWindow, double quefrencyAveragingWindow, double pitchFloor, double pitchCeiling); double PowerCepstrogram_getCPPS (PowerCepstrogram me, bool subtractTiltBeforeSmoothing, double timeAveragingWindow, double quefrencyAveragingWindow, double pitchFloor, double pitchCeiling, double deltaF0, int interpolation, double qstartFit, double qendFit, int lineType, int fitMethod); double PowerCepstrogram_getCPPS (PowerCepstrogram me, bool subtractTiltBeforeSmoothing, double timeAveragingWindow, double quefrencyAveragingWindow, double pitchFloor, double pitchCeiling, double deltaF0, int interpolation, double qstartFit, double qendFit, kCepstrumTrendType lineType, kCepstrumTrendFit fitMethod); autoMatrix PowerCepstrogram_to_Matrix (PowerCepstrogram me); Loading