/Libraries/voice.h
C++ Header | 85 lines | 45 code | 16 blank | 24 comment | 0 complexity | 9a4916bea7f66975e15464b984bf011e MD5 | raw file
1/*************************************************************************** 2 * Copyright (C) 2005 to 2007 by Jonathan Duddington * 3 * email: jonsd@users.sourceforge.net * 4 * * 5 * This program is free software; you can redistribute it and/or modify * 6 * it under the terms of the GNU General Public License as published by * 7 * the Free Software Foundation; either version 3 of the License, or * 8 * (at your option) any later version. * 9 * * 10 * This program is distributed in the hope that it will be useful, * 11 * but WITHOUT ANY WARRANTY; without even the implied warranty of * 12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * 13 * GNU General Public License for more details. * 14 * * 15 * You should have received a copy of the GNU General Public License * 16 * along with this program; if not, write see: * 17 * <http://www.gnu.org/licenses/>. * 18 ***************************************************************************/ 19 20 21 22typedef struct { 23 char v_name[40]; 24 25 int phoneme_tab_ix; // phoneme table number 26 int pitch_base; // Hz<<12 27 int pitch_range; // standard = 0x1000 28 29 int speedf1; 30 int speedf2; 31 int speedf3; 32 33 int speed_percent; // adjust the WPM speed by this percentage 34 int flutter; 35 int roughness; 36 int echo_delay; 37 int echo_amp; 38 int n_harmonic_peaks; // highest formant which is formed from adding harmonics 39 int peak_shape; // alternative shape for formant peaks (0=standard 1=squarer) 40 int voicing; // 100% = 64, level of formant-synthesized sound 41 int formant_factor; // adjust nominal formant frequencies by this because of the voice's pitch (256ths) 42 int consonant_amp; // amplitude of unvoiced consonants 43 int consonant_ampv; // amplitude of the noise component of voiced consonants 44 int samplerate; 45 int klattv[8]; 46 47 // parameters used by Wavegen 48 short freq[N_PEAKS]; // 100% = 256 49 short height[N_PEAKS]; // 100% = 256 50 short width[N_PEAKS]; // 100% = 256 51 short freqadd[N_PEAKS]; // Hz 52 53 // copies without temporary adjustments from embedded commands 54 short freq2[N_PEAKS]; // 100% = 256 55 short height2[N_PEAKS]; // 100% = 256 56 short width2[N_PEAKS]; // 100% = 256 57 58 int breath[N_PEAKS]; // amount of breath for each formant. breath[0] indicates whether any are set. 59 int breathw[N_PEAKS]; // width of each breath formant 60 61 // This table provides the opportunity for tone control. 62 // Adjustment of harmonic amplitudes, steps of 8Hz 63 // value of 128 means no change 64 #define N_TONE_ADJUST 1000 65 unsigned char tone_adjust[N_TONE_ADJUST]; // 8Hz steps * 1000 = 8kHz 66 67} voice_t; 68 69// percentages shown to user, ix=N_PEAKS means ALL peaks 70extern USHORT voice_pcnt[N_PEAKS+1][3]; 71 72 73extern voice_t *voice; 74extern int tone_points[12]; 75 76const char *SelectVoice(espeak_VOICE *voice_select, int *found); 77espeak_VOICE *SelectVoiceByName(espeak_VOICE **voices, const char *name); 78voice_t *LoadVoice(const char *voice_name, int control); 79voice_t *LoadVoiceVariant(const char *voice_name, int variant); 80void DoVoiceChange(voice_t *v); 81void WVoiceChanged(voice_t *wvoice); 82void WavegenSetVoice(voice_t *v); 83void ReadTonePoints(char *string, int *tone_pts); 84void VoiceReset(int control); 85