Browse Source

Merge branch 'development'

master
Reece Dunn 13 years ago
parent
commit
8f32b1369f

+ 0
- 1
dictsource/en_list View File

gauche goUS gauche goUS
gauge geIdZ gauge geIdZ
gavel gav@L gavel gav@L
gecko gEkoU
geese gi:s geese gi:s
gemini dZEmI2naI gemini dZEmI2naI
geni dZi:ni geni dZi:ni

+ 3
- 0
dictsource/en_rules View File

chloro kl,o@roU chloro kl,o@roU
choir kwaI3 choir kwaI3
ch (ol k ch (ol k
_) ch (ola tS // for lang=ta
choly k@l%I choly k@l%I
ch (ond k ch (ond k
ch (orA k ch (orA k
gg g gg g
g (e dZ g (e dZ
_) gaol dZeIl _) gaol dZeIl
_) g (ec g
ge (dd g'E ge (dd g'E
g (eek g g (eek g
_) g (ert g _) g (ert g
_) g (ek g
ge (nic_ dZ'E ge (nic_ dZ'E
genesis dZ'EnI2sIs genesis dZ'EnI2sIs
geous dZ=@s geous dZ=@s

+ 38
- 3
dictsource/ta_rules View File



/*************************************************************************** /***************************************************************************
* Copyright (C) 2009 to 2010 by Jonathan Duddington *
* Copyright (C) 2009 to 2012 by Jonathan Duddington *
* email: [email protected] * * email: [email protected] *
* * * *
* This program is free software; you can redistribute it and/or modify * * This program is free software; you can redistribute it and/or modify *
_) க (ுணவதி g _) க (ுணவதி g
_) க (ுணவான g _) க (ுணவான g
_) க (ுணா g _) க (ுணா g
_) குண்ட (க்கல gun.t.V#
_) க (ுண்டடி g _) க (ுண்டடி g
_) க (ுண்டன g _) க (ுண்டன g
_) க (ுண்டம்மா g _) க (ுண்டம்மா g
_) க (ுண்டின g _) க (ுண்டின g
_) க (ுண்டு g _) க (ுண்டு g
_) க (ுண்டூசி g _) க (ுண்டூசி g
_) குண்ட (ூர gun.t.V#
_) க (ுண்டை g _) க (ுண்டை g
_) க (ுண்டோதர g _) க (ுண்டோதர g
_) க (ுதிக் g _) க (ுதிக் g
_) க (ுருமார g _) க (ுருமார g
_) க (ுருமூர்த்தி g _) க (ுருமூர்த்தி g
_) க (ுருரா g _) க (ுருரா g
_) க (ுருவடி g
_) க (ுருவா g _) க (ுருவா g
_) க (ுருவாய g _) க (ுருவாய g
_) க (ுருவிட g _) க (ுருவிட g
_) க (ோரக g _) க (ோரக g
_) க (ோரத்_தாண்ட g _) க (ோரத்_தாண்ட g
_) க (ோரப்_L20 g _) க (ோரப்_L20 g
_) க (ோரப்பற் g
_) க (ோரப்பல் g
_) க (ோரப்போர g
_) க (ோரம g _) க (ோரம g
_) க (ோலிக g _) க (ோலிக g
_) க (ோலிய g _) க (ோலிய g
_தென்) க (ாசி k _தென்) க (ாசி k
_நேர்) க (ாணல k _நேர்) க (ாணல k
_கண்) க (ாணா k _கண்) க (ாணா k
_ஏ) க (ாதசி k
_ராம) க (ாதை k _ராம) க (ாதை k
இராம) க (ாதை k இராம) க (ாதை k
_ஸ்ரீ) காந்த ka:ntV# _ஸ்ரீ) காந்த ka:ntV#
நற்) க (ுண g நற்) க (ுண g
_சற்) க (ுண g _சற்) க (ுண g
ஏறிக்) க (ுதி g ஏறிக்) க (ுதி g
க (ுமரன k
_கண்ணியா) க (ுமரி k _கண்ணியா) க (ுமரி k
க (ுமார k க (ுமார k
_டா) குமெண்ட kUmen.tV# _டா) குமெண்ட kUmen.tV#
நிர்) க்க (தி ggV நிர்) க்க (தி ggV
_தீர்) க்க (மாக ggV _தீர்) க்க (மாக ggV
_தீர்) க்க (மான ggV _தீர்) க்க (மான ggV
_தனி) க்க (வன ggV
_முழு) க்க (வன ggV
தீர்) க்க (ாலோசநை gg தீர்) க்க (ாலோசநை gg
_ல) க்க (ின gg _ல) க்க (ின gg
_வி) க்க (ினம்_ gg _வி) க்க (ினம்_ gg
அருணா) ச (ல tSV அருணா) ச (ல tSV
வெங்கடா) ச (ல tSV வெங்கடா) ச (ல tSV
வேங்கடா) ச (ல tSV வேங்கடா) ச (ல tSV
_) ச (லோ tSV
_) ச (வான tSV _) ச (வான tSV
_) சாக்ப (ீL04 tSa:kp _) சாக்ப (ீL04 tSa:kp
_) சாக்லேட் tSa:kle:t. _) சாக்லேட் tSa:kle:t.
மே) சு (வ s மே) சு (வ s
வி) சு (வ s வி) சு (வ s
_சனீ) சு (வர s _சனீ) சு (வர s
ராஜே) சு (வர s
அகிலாண்டே) சு (வர s
இராவணே) சு (வர s இராவணே) சு (வர s
ராவணே) சு (வர s ராவணே) சு (வர s
_) சுவர்க்க svVrggV# _) சுவர்க்க svVrggV#
_) த (ானிய d _) த (ானிய d
_) த (ானியங்கி t _) த (ானியங்கி t
_) த (ானுவ d _) த (ானுவ d
_) த (ான்ய d
_) த (ாமோதர d _) த (ாமோதர d
_) த (ாம்_தூம d _) த (ாம்_தூம d
_) த (ாயங்கள d _) த (ாயங்கள d
_) தீர்க்க (முள்ள di:rggV# _) தீர்க்க (முள்ள di:rggV#
_) தீர்க்க (ம்_ di:rggV _) தீர்க்க (ம்_ di:rggV
_) தீர்க்க (ாயு di:rggV# _) தீர்க்க (ாயு di:rggV#
_) த (ீவாளி d
_) து(ரோக d _) து(ரோக d
_) த (ுக்க d _) த (ுக்க d
_) த (ுக்கா t
_) த (ுக்கோ t
_) த (ுச்சம d _) த (ுச்சம d
_) த (ுச்சாதனன d _) த (ுச்சாதனன d
_) த (ுஜஸ் d _) த (ுஜஸ் d
_) த (ேவரு t _) த (ேவரு t
_) த (ேவரை t _) த (ேவரை t
_) த (ேவர்_ t _) த (ேவர்_ t
_) த (ேவல t
_) த (ேவல_ t
_) த (ேவலை t
_) த (ேவிடியா t _) த (ேவிடியா t
_) த (ேவிடியா t _) த (ேவிடியா t
_) த (ேவேந் d _) த (ேவேந் d
வா) த்த (ிய dd வா) த்த (ிய dd
வை) த்த (ிய dd வை) த்த (ிய dd
உபா) த்த (ிய dd உபா) த்த (ிய dd
_நைவே) த்த (ிய dd
_சா) த்த (ிய_ tt _சா) த்த (ிய_ tt
பு) த்த (ியி dd பு) த்த (ியி dd
_சா) த்த (ியிரு tt _சா) த்த (ியிரு tt
_) ப (ாங்கில b _) ப (ாங்கில b
_) ப (ாங்க் b _) ப (ாங்க் b
_) ப (ாசு b _) ப (ாசு b
_) பாசுப (த pa:sUpV
_) ப (ாசுர p _) ப (ாசுர p
_டெட்_) ப (ாடி b _டெட்_) ப (ாடி b
_) ப (ாடி_பில்டிங் b _) ப (ாடி_பில்டிங் b
_) ப (ாஷிய b _) ப (ாஷிய b
_) ப (ாஷை b _) ப (ாஷை b
_) ப (ாஷ்ய b _) ப (ாஷ்ய b
_) ப (ாஸந்தி b
_) ப (ாஸ்கர b _) ப (ாஸ்கர b
_) ப (ாஸ்கி b _) ப (ாஸ்கி b
_) ப (ாஸ்டன b _) ப (ாஸ்டன b
_) பி (ரத்தியேக p _) பி (ரத்தியேக p
_) பிரத் (யேக prVt _) பிரத் (யேக prVt
_) பி (ரப p _) பி (ரப p
_) பிரம (ன brVmmV
_) பி (ரமாண p _) பி (ரமாண p
_) பி (ரமாண்ட b _) பி (ரமாண்ட b
_) பி (ரமாத p _) பி (ரமாத p
_) பி (ரஸல்ஸ b _) பி (ரஸல்ஸ b
_) பி (ரஸாத p _) பி (ரஸாத p
_) பி (ரஸ்தா p _) பி (ரஸ்தா p
_) பி (ரஹதீசு b
_) பி (ரஹதீஸ் b
_) பி (ரஹலாத p _) பி (ரஹலாத p
_) பி (ரஹஸ் b
_) பி (ராகார p _) பி (ராகார p
_) பி (ராகிருத p _) பி (ராகிருத p
_) பி (ராக்கள b _) பி (ராக்கள b
_) பிரு (கன்நளை bri _) பிரு (கன்நளை bri
_) பி (ருகு b _) பி (ருகு b
_) பிரு (ந்தா bri _) பிரு (ந்தா bri
_) ப (ிருஷ்ட b
_) பிரெஞ்ச fren^tSV# _) பிரெஞ்ச fren^tSV#
_) பி (ரெட் b _) பி (ரெட் b
_) பிரெட்ரிக் fred.rik _) பிரெட்ரிக் fred.rik
_) ப (ௌதிக b _) ப (ௌதிக b
_) ப (ௌத்த b _) ப (ௌத்த b
_) ப (ௌலிங் b _) ப (ௌலிங் b
_) ப (ௌஷ b
சு) ப்பி (ரமணி b சு) ப்பி (ரமணி b
_) ப் (ரசல்ஸ b _) ப் (ரசல்ஸ b
_) ப்ரபொ (சர profV _) ப்ரபொ (சர profV
நன்) ப (கல pV நன்) ப (கல pV
பின்) ப (கல pV பின்) ப (கல pV
முன்) ப (கல pV முன்) ப (கல pV
னி) ப (கவான் bV
வட) ப (குதி pV வட) ப (குதி pV
தென்) ப (குதி pV தென்) ப (குதி pV
அக்கம்) ப (க்க bV அக்கம்) ப (க்க bV
வட) ப (ழ pV வட) ப (ழ pV
வீண்) ப (ழி pV வீண்) ப (ழி pV
_முத்து) ப (வள pV _முத்து) ப (வள pV
த) ப (ஸ bV
_வா) ப (ஸ pV _வா) ப (ஸ pV
_தீ) ப (ா p _தீ) ப (ா p
_கலி) ப (ா f _கலி) ப (ா f
_நடை) ப (ாதை p _நடை) ப (ாதை p
ஜிந்தா) ப (ாத் b ஜிந்தா) ப (ாத் b
_பஞ்ச) ப (ாத்திர p _பஞ்ச) ப (ாத்திர p
அ) ப (ான p
ச) பாபதி ba:pVti ச) பாபதி ba:pVti
_) பாபவிமோசன pa:bVvimo:tSV _) பாபவிமோசன pa:bVvimo:tSV
_சாயி) பாப (ா ba:b _சாயி) பாப (ா ba:b
அக்கினி) ப (ுத்திர p அக்கினி) ப (ுத்திர p
வில்லி) ப (ுத்தூர p வில்லி) ப (ுத்தூர p
ம்) ப (ுரா b ம்) ப (ுரா b
ம்) ப (ுரி b
_தர்ம) ப (ுரி p _தர்ம) ப (ுரி p
_மர) ப (ுரிமை b _மர) ப (ுரிமை b
இன்) ப (ுற b இன்) ப (ுற b
_ர) ப்ப (ர bbV _ர) ப்ப (ர bbV
ஆ) ப்ப (ரிக்க fV ஆ) ப்ப (ரிக்க fV
தென்னா) ப்ப (ரிக்க fV தென்னா) ப்ப (ரிக்க fV
_கள) ப்ப (லி bbV
உயிர்) ப்ப (லி bbV உயிர்) ப்ப (லி bbV
L03) ப்ப (ஸ bbV L03) ப்ப (ஸ bbV
_ட) ப்ப (ா bb _ட) ப்ப (ா bb
தேச) ப்பி (ரஷ்ட pp தேச) ப்பி (ரஷ்ட pp
ஆ) ப்பி (ரிக்க f ஆ) ப்பி (ரிக்க f
தென்னா) ப்பி (ரிக்க fV தென்னா) ப்பி (ரிக்க fV
_கஜ) ப்ப (ிருஷ்ட bb
_ஹ) ப்ப (ிள bb _ஹ) ப்ப (ிள bb
_க்ள) ப்ப (ுகள bb _க்ள) ப்ப (ுகள bb
உ) ப்ப (ுசத்த bb உ) ப்ப (ுசத்த bb
உ) ப்ப (ுசம bb உ) ப்ப (ுசம bb
_சந்தேக) ப்ப (ுத்தி bb _சந்தேக) ப்ப (ுத்தி bb
L03) ப்ப (ூதத் bb
L03) ப்ப (ூதம bb
இ) ப்ப (ூமி bb இ) ப்ப (ூமி bb
_ல) ப்ப (ை bb _ல) ப்ப (ை bb
_தர்) ப்ப (ை bb
துர்) ப்ப (ோதனை bb துர்) ப்ப (ோதனை bb
_கே) ப் (மாரி p _கே) ப் (மாரி p
கம்) ப்யூட (ர pjU:t.V கம்) ப்யூட (ர pjU:t.V
_ம) ெள (ஸ aU // bad scanning _ம) ெள (ஸ aU // bad scanning
_ச) ெள aU _ச) ெள aU
_ப) ெள aU _ப) ெள aU
_வ) ெள (வால aU


ே e: ே e:



BIN
phsource/vowel/e#_2 View File


+ 1
- 2
platforms/windows/make_espeak.iss View File

[Setup] [Setup]
AppName=eSpeak AppName=eSpeak
AppVerName=eSpeak version 1.46.02
AppVerName=eSpeak version 1.46.08
AppCopyright=Licensed under GNU General Public License version 3. (See file License.txt for details). AppCopyright=Licensed under GNU General Public License version 3. (See file License.txt for details).
WindowVisible=yes WindowVisible=yes
$41: Result := 'sw'; $41: Result := 'sw';
$49: Result := 'ta'; $49: Result := 'ta';
$4b: Result := 'kn'; $4b: Result := 'kn';
$4c: Result := 'ml';
//$50: Result := 'mn'; //$50: Result := 'mn';
$52: Result := 'cy'; $52: Result := 'cy';
//$5e: Result := 'am'; //$5e: Result := 'am';

+ 1
- 1
platforms/windows/make_espeakedit.iss View File

[Setup] [Setup]
AppName=eSpeakEdit AppName=eSpeakEdit
AppVerName=eSpeakEdit version 1.46.02
AppVerName=eSpeakEdit version 1.46.01
DefaultDirName={pf}\eSpeak DefaultDirName={pf}\eSpeak
DefaultGroupName=eSpeak DefaultGroupName=eSpeak
OutputBaseFilename=setup_espeakedit OutputBaseFilename=setup_espeakedit

+ 1
- 1
src/dictionary.cpp View File



if(p[0] == RULE_REPLACEMENTS) if(p[0] == RULE_REPLACEMENTS)
{ {
pw = (unsigned int *)(((long)p+4) & ~3); // advance to next word boundary
pw = (unsigned int *)(((long64)p+4) & ~3); // advance to next word boundary
tr->langopts.replace_chars = pw; tr->langopts.replace_chars = pw;
while(pw[0] != 0) while(pw[0] != 0)
{ {

+ 2
- 3
src/speak_lib.cpp View File

ENTER("MarkerEvent"); ENTER("MarkerEvent");
espeak_EVENT *ep; espeak_EVENT *ep;
double time; double time;
PHONEME_TAB *ph;
if((event_list == NULL) || (event_list_ix >= (n_event_list-2))) if((event_list == NULL) || (event_list_ix >= (n_event_list-2)))
return; return;
if((type == espeakEVENT_MARK) || (type == espeakEVENT_PLAY)) if((type == espeakEVENT_MARK) || (type == espeakEVENT_PLAY))
ep->id.name = &namedata[value]; ep->id.name = &namedata[value];
else else
#ifdef deleted
//#ifdef deleted
// temporarily removed, don't introduce until after eSpeak version 1.46.02 // temporarily removed, don't introduce until after eSpeak version 1.46.02
if(type == espeakEVENT_PHONEME) if(type == espeakEVENT_PHONEME)
{ {
p[1] = value2; p[1] = value2;
} }
else else
#endif
//#endif
{ {
ep->id.number = value; ep->id.number = value;
} }

+ 1
- 1
src/speak_lib.h View File

#ifndef SPEAK_LIB_H #ifndef SPEAK_LIB_H
#define SPEAK_LIB_H #define SPEAK_LIB_H
/*************************************************************************** /***************************************************************************
* Copyright (C) 2005 to 2010 by Jonathan Duddington *
* Copyright (C) 2005 to 2012 by Jonathan Duddington *
* email: [email protected] * * email: [email protected] *
* * * *
* This program is free software; you can redistribute it and/or modify * * This program is free software; you can redistribute it and/or modify *

+ 1
- 1
src/speech.h View File

typedef unsigned short USHORT; typedef unsigned short USHORT;
typedef unsigned char UCHAR; typedef unsigned char UCHAR;
typedef double DOUBLEX; typedef double DOUBLEX;
typedef unsigned long long64; // use this for conversion between pointers and integers







+ 1
- 1
src/synthdata.cpp View File

#include "translate.h" #include "translate.h"
#include "wave.h" #include "wave.h"


const char *version_string = "1.46.02 06.Jan.12";
const char *version_string = "1.46.13 14.Jan.12";
const int version_phdata = 0x014600; const int version_phdata = 0x014600;


int option_device_number = -1; int option_device_number = -1;

+ 37
- 28
src/synthesize.cpp View File



static void DoAmplitude(int amp, unsigned char *amp_env) static void DoAmplitude(int amp, unsigned char *amp_env)
{//===================================================== {//=====================================================
long *q;
long64 *q;


last_amp_cmd = wcmdq_tail; last_amp_cmd = wcmdq_tail;
amp_length = 0; // total length of vowel with this amplitude envelope amp_length = 0; // total length of vowel with this amplitude envelope
q = wcmdq[wcmdq_tail]; q = wcmdq[wcmdq_tail];
q[0] = WCMD_AMPLITUDE; q[0] = WCMD_AMPLITUDE;
q[1] = 0; // fill in later from amp_length q[1] = 0; // fill in later from amp_length
q[2] = (long)amp_env;
q[2] = (long64)amp_env;
q[3] = amp; q[3] = amp;
WcmdqInc(); WcmdqInc();
} // end of DoAmplitude } // end of DoAmplitude


static void DoPitch(unsigned char *env, int pitch1, int pitch2) static void DoPitch(unsigned char *env, int pitch1, int pitch2)
{//============================================================ {//============================================================
long *q;
long64 *q;


EndPitch(0); EndPitch(0);


q = wcmdq[wcmdq_tail]; q = wcmdq[wcmdq_tail];
q[0] = WCMD_PITCH; q[0] = WCMD_PITCH;
q[1] = 0; // length, fill in later from pitch_length q[1] = 0; // length, fill in later from pitch_length
q[2] = (long)env;
q[2] = (long64)env;
q[3] = (pitch1 << 16) + pitch2; q[3] = (pitch1 << 16) + pitch2;
WcmdqInc(); WcmdqInc();
} // end of DoPitch } // end of DoPitch
int min_length; int min_length;
int x; int x;
int len4; int len4;
long *q;
long64 *q;
unsigned char *p; unsigned char *p;


index = index & 0x7fffff; index = index & 0x7fffff;
q = wcmdq[wcmdq_tail]; q = wcmdq[wcmdq_tail];
q[0] = WCMD_WAVE2; q[0] = WCMD_WAVE2;
q[1] = length | (wav_length << 16); // length in samples q[1] = length | (wav_length << 16); // length in samples
q[2] = long(&wavefile_data[index]);
q[2] = long64(&wavefile_data[index]);
q[3] = wav_scale + (amp << 8); q[3] = wav_scale + (amp << 8);
WcmdqInc(); WcmdqInc();
return(length); return(length);
q = wcmdq[wcmdq_tail]; q = wcmdq[wcmdq_tail];
q[0] = WCMD_WAVE; q[0] = WCMD_WAVE;
q[1] = x; // length in samples q[1] = x; // length in samples
q[2] = long(&wavefile_data[index]);
q[2] = long64(&wavefile_data[index]);
q[3] = wav_scale + (amp << 8); q[3] = wav_scale + (amp << 8);
WcmdqInc(); WcmdqInc();


q = wcmdq[wcmdq_tail]; q = wcmdq[wcmdq_tail];
q[0] = WCMD_WAVE; q[0] = WCMD_WAVE;
q[1] = len4*2; // length in samples q[1] = len4*2; // length in samples
q[2] = long(&wavefile_data[index+x]);
q[2] = long64(&wavefile_data[index+x]);
q[3] = wav_scale + (amp << 8); q[3] = wav_scale + (amp << 8);
WcmdqInc(); WcmdqInc();


q = wcmdq[wcmdq_tail]; q = wcmdq[wcmdq_tail];
q[0] = WCMD_WAVE; q[0] = WCMD_WAVE;
q[1] = length; // length in samples q[1] = length; // length in samples
q[2] = long(&wavefile_data[index+x]);
q[2] = long64(&wavefile_data[index+x]);
q[3] = wav_scale + (amp << 8); q[3] = wav_scale + (amp << 8);
WcmdqInc(); WcmdqInc();
} }
{//========================== {//==========================
// Limit the rate of frequence change of formants, to reduce chirping // Limit the rate of frequence change of formants, to reduce chirping


long *q;
long64 *q;
frame_t *frame; frame_t *frame;
frame_t *frame2; frame_t *frame2;
frame_t *frame1; frame_t *frame1;
frame1 = (frame_t *)q[3]; frame1 = (frame_t *)q[3];
if(frame1 == frame) if(frame1 == frame)
{ {
q[3] = (long)frame2;
q[3] = (long64)frame2;
frame1 = frame2; frame1 = frame2;
} }
else else
modified = 1; modified = 1;
} }
frame2->ffreq[pk] = frame1->ffreq[pk] + allowed; frame2->ffreq[pk] = frame1->ffreq[pk] + allowed;
q[2] = (long)frame2;
q[2] = (long64)frame2;
} }
else else
if(diff < -allowed) if(diff < -allowed)
modified = 1; modified = 1;
} }
frame2->ffreq[pk] = frame1->ffreq[pk] - allowed; frame2->ffreq[pk] = frame1->ffreq[pk] - allowed;
q[2] = (long)frame2;
q[2] = (long64)frame2;
} }
} }
} }
{ {
if(frame1 == frame) if(frame1 == frame)
{ {
q[2] = (long)frame2;
q[2] = (long64)frame2;
frame1 = frame2; frame1 = frame2;
} }
else else
modified = 1; modified = 1;
} }
frame2->ffreq[pk] = frame1->ffreq[pk] + allowed; frame2->ffreq[pk] = frame1->ffreq[pk] + allowed;
q[3] = (long)frame2;
q[3] = (long64)frame2;
} }
else else
if(diff < -allowed) if(diff < -allowed)
modified = 1; modified = 1;
} }
frame2->ffreq[pk] = frame1->ffreq[pk] - allowed; frame2->ffreq[pk] = frame1->ffreq[pk] - allowed;
q[3] = (long)frame2;
q[3] = (long64)frame2;
} }
} }
} }
frame_t *frame2; frame_t *frame2;
frame_t *fr; frame_t *fr;
int ix; int ix;
long *q;
long64 *q;
int len; int len;
int frame_length; int frame_length;
int length_factor; int length_factor;
&& !(last_frame->frflags & FRFLAG_BREAK)) && !(last_frame->frflags & FRFLAG_BREAK))
{ {
// last frame of previous sequence was zero-length, replace with first of this sequence // last frame of previous sequence was zero-length, replace with first of this sequence
wcmdq[last_wcmdq][3] = (long)frame1;
wcmdq[last_wcmdq][3] = (long64)frame1;


if(last_frame->frflags & FRFLAG_BREAK_LF) if(last_frame->frflags & FRFLAG_BREAK_LF)
{ {
fr->ffreq[ix] = last_frame->ffreq[ix]; fr->ffreq[ix] = last_frame->ffreq[ix];
fr->fheight[ix] = last_frame->fheight[ix]; fr->fheight[ix] = last_frame->fheight[ix];
} }
wcmdq[last_wcmdq][3] = (long)fr;
wcmdq[last_wcmdq][3] = (long64)fr;
} }
} }
} }
q = wcmdq[wcmdq_tail]; q = wcmdq[wcmdq_tail];
q[0] = wcmd_spect; q[0] = wcmd_spect;
q[1] = len + (modulation << 16); q[1] = len + (modulation << 16);
q[2] = long(frame1);
q[3] = long(frame2);
q[2] = (long64)frame1;
q[3] = (long64)frame2;
WcmdqInc(); WcmdqInc();
} }
v2 = (voice_t *)malloc(sizeof(voice_t)); v2 = (voice_t *)malloc(sizeof(voice_t));
memcpy(v2,v,sizeof(voice_t)); memcpy(v2,v,sizeof(voice_t));
wcmdq[wcmdq_tail][0] = WCMD_VOICE; wcmdq[wcmdq_tail][0] = WCMD_VOICE;
wcmdq[wcmdq_tail][1] = (long)(v2);
wcmdq[wcmdq_tail][2] = (long64)v2;
WcmdqInc(); WcmdqInc();
} }


DoPause(10,0); // ensure a break in the speech DoPause(10,0); // ensure a break in the speech
wcmdq[wcmdq_tail][0] = WCMD_WAVE; wcmdq[wcmdq_tail][0] = WCMD_WAVE;
wcmdq[wcmdq_tail][1] = soundicon_tab[value].length; wcmdq[wcmdq_tail][1] = soundicon_tab[value].length;
wcmdq[wcmdq_tail][2] = (long)soundicon_tab[value].data + 44; // skip WAV header
wcmdq[wcmdq_tail][2] = (long64)soundicon_tab[value].data + 44; // skip WAV header
wcmdq[wcmdq_tail][3] = 0x1500; // 16 bit data, amp=21 wcmdq[wcmdq_tail][3] = 0x1500; // 16 bit data, amp=21
WcmdqInc(); WcmdqInc();
} }
unsigned char *amp_env; unsigned char *amp_env;
PHONEME_TAB *ph; PHONEME_TAB *ph;
int use_ipa=0; int use_ipa=0;
int done_phoneme_marker;
char phoneme_name[16]; char phoneme_name[16];
static int sourceix=0; static int sourceix=0;


if(p->prepause > 0) if(p->prepause > 0)
DoPause(p->prepause,1); DoPause(p->prepause,1);


if(option_phoneme_events && (p->type != phVOWEL) && (p->ph->code != phonEND_WORD))
done_phoneme_marker = 0;
if(option_phoneme_events && (p->ph->code != phonEND_WORD))
{ {
// Note, for vowels, do the phoneme event after the vowel-start
WritePhMnemonic(phoneme_name, p->ph, p, use_ipa);
DoPhonemeMarker(espeakEVENT_PHONEME, sourceix, 0, phoneme_name);
if((p->type == phVOWEL) && (prev->type==phLIQUID || prev->type==phNASAL))
{
// For vowels following a liquid or nasal, do the phoneme event after the vowel-start
}
else
{
WritePhMnemonic(phoneme_name, p->ph, p, use_ipa);
DoPhonemeMarker(espeakEVENT_PHONEME, sourceix, 0, phoneme_name);
done_phoneme_marker = 1;
}
} }


switch(p->type) switch(p->type)
DoSpect2(ph, 1, &fmtp, p, modulation); DoSpect2(ph, 1, &fmtp, p, modulation);
} }


if(option_phoneme_events)
if((option_phoneme_events) && (done_phoneme_marker == 0))
{ {
WritePhMnemonic(phoneme_name, p->ph, p, use_ipa); WritePhMnemonic(phoneme_name, p->ph, p, use_ipa);
DoPhonemeMarker(espeakEVENT_PHONEME, sourceix, 0, phoneme_name); DoPhonemeMarker(espeakEVENT_PHONEME, sourceix, 0, phoneme_name);

+ 1
- 1
src/synthesize.h View File

#define N_WCMDQ 170 #define N_WCMDQ 170
#define MIN_WCMDQ 25 // need this many free entries before adding new phoneme #define MIN_WCMDQ 25 // need this many free entries before adding new phoneme


extern long wcmdq[N_WCMDQ][4];
extern long64 wcmdq[N_WCMDQ][4];
extern int wcmdq_head; extern int wcmdq_head;
extern int wcmdq_tail; extern int wcmdq_tail;



+ 4
- 4
src/wavegen.cpp View File

int outbuf_size = 0; int outbuf_size = 0;


// the queue of operations passed to wavegen from sythesize // the queue of operations passed to wavegen from sythesize
long wcmdq[N_WCMDQ][4];
long64 wcmdq[N_WCMDQ][4];
int wcmdq_head=0; int wcmdq_head=0;
int wcmdq_tail=0; int wcmdq_tail=0;


// return: 0 output buffer has been filled // return: 0 output buffer has been filled
// return: 1 input command queue is now empty // return: 1 input command queue is now empty


long *q;
long64 *q;
int length; int length;
int result; int result;
int marker_type; int marker_type;
break; break;


case WCMD_VOICE: case WCMD_VOICE:
WavegenSetVoice((voice_t *)q[1]);
free((voice_t *)q[1]);
WavegenSetVoice((voice_t *)q[2]);
free((voice_t *)q[2]);
break; break;


case WCMD_EMBEDDED: case WCMD_EMBEDDED:

Loading…
Cancel
Save