/Libraries/voice.h

http://espeak-engine.googlecode.com/ · 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. typedef struct {
  20. char v_name[40];
  21. int phoneme_tab_ix; // phoneme table number
  22. int pitch_base; // Hz<<12
  23. int pitch_range; // standard = 0x1000
  24. int speedf1;
  25. int speedf2;
  26. int speedf3;
  27. int speed_percent; // adjust the WPM speed by this percentage
  28. int flutter;
  29. int roughness;
  30. int echo_delay;
  31. int echo_amp;
  32. int n_harmonic_peaks; // highest formant which is formed from adding harmonics
  33. int peak_shape; // alternative shape for formant peaks (0=standard 1=squarer)
  34. int voicing; // 100% = 64, level of formant-synthesized sound
  35. int formant_factor; // adjust nominal formant frequencies by this because of the voice's pitch (256ths)
  36. int consonant_amp; // amplitude of unvoiced consonants
  37. int consonant_ampv; // amplitude of the noise component of voiced consonants
  38. int samplerate;
  39. int klattv[8];
  40. // parameters used by Wavegen
  41. short freq[N_PEAKS]; // 100% = 256
  42. short height[N_PEAKS]; // 100% = 256
  43. short width[N_PEAKS]; // 100% = 256
  44. short freqadd[N_PEAKS]; // Hz
  45. // copies without temporary adjustments from embedded commands
  46. short freq2[N_PEAKS]; // 100% = 256
  47. short height2[N_PEAKS]; // 100% = 256
  48. short width2[N_PEAKS]; // 100% = 256
  49. int breath[N_PEAKS]; // amount of breath for each formant. breath[0] indicates whether any are set.
  50. int breathw[N_PEAKS]; // width of each breath formant
  51. // This table provides the opportunity for tone control.
  52. // Adjustment of harmonic amplitudes, steps of 8Hz
  53. // value of 128 means no change
  54. #define N_TONE_ADJUST 1000
  55. unsigned char tone_adjust[N_TONE_ADJUST]; // 8Hz steps * 1000 = 8kHz
  56. } voice_t;
  57. // percentages shown to user, ix=N_PEAKS means ALL peaks
  58. extern USHORT voice_pcnt[N_PEAKS+1][3];
  59. extern voice_t *voice;
  60. extern int tone_points[12];
  61. const char *SelectVoice(espeak_VOICE *voice_select, int *found);
  62. espeak_VOICE *SelectVoiceByName(espeak_VOICE **voices, const char *name);
  63. voice_t *LoadVoice(const char *voice_name, int control);
  64. voice_t *LoadVoiceVariant(const char *voice_name, int variant);
  65. void DoVoiceChange(voice_t *v);
  66. void WVoiceChanged(voice_t *wvoice);
  67. void WavegenSetVoice(voice_t *v);
  68. void ReadTonePoints(char *string, int *tone_pts);
  69. void VoiceReset(int control);