Pitch2Ola.c
3.29 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
/*
--------------------------------------------------------
LIA_PHON : Un systeme complet de phonetisation de textes
--------------------------------------------------------
Copyright (C) 2001 FREDERIC BECHET
..................................................................
This file is part of LIA_PHON
LIA_PHON is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
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 General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
..................................................................
For any publication related to scientific work using LIA_PHON,
the following reference paper must be mentioned in the bibliography:
Bechet F., 2001, "LIA_PHON - Un systeme complet de phonetisation
de textes", revue Traitement Automatique des Langues (T.A.L.)
volume 42, numero 1/2001, edition Hermes
..................................................................
Contact :
FREDERIC BECHET - LIA - UNIVERSITE D'AVIGNON
AGROPARC BP1228 84911 AVIGNON CEDEX 09 FRANCE
frederic.bechet@lia.univ-avignon.fr
..................................................................
*/
/* Extrait les parametres ola d'un fichier pitch avec le fichier phon */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int TraitePhoneme(ch,file,debut,last)
char *ch;
FILE *file;
int debut,*last;
{
int n,duree,limite,courant,pitch,p,nb;
char ch2[200];
printf("%s ",ch);
for(n=0;(ch[n])&&(ch[n]!=' ');n++);
if (ch[n]!=' ') { fprintf(stderr,"Bad Format\n"); exit(0); }
sscanf(ch+n+1,"%d",&duree);
for(nb=0,limite=debut+duree,courant=debut;courant<limite;courant+=10)
if (fgets(ch2,200,file))
{
sscanf(ch2,"%d",&pitch);
if ((nb<=12)&&(abs(pitch-(*last))>10)&&(*ch!='_'))
{
*last=pitch;
nb++;
p=(int)(((courant-debut)*100)/duree);
if (p==0) p=2;
printf("%d %d ",p,pitch);
}
}
printf("\n");
return limite;
}
int main(argc,argv)
int argc;
char **argv;
{
char ch[200];
FILE *file1,*file2;
int debut,pitch,n;
if (argc<=2)
{
fprintf(stderr,"Syntaxe : Pitch2Ola <fich ola> <fich pitch>\n");
exit(0);
}
if(!(file1=fopen(argv[1],"rt"))) { fprintf(stderr,"Can't open %d\n",argv[1]); exit(0); }
if(!(file2=fopen(argv[2],"rt"))) { fprintf(stderr,"Can't open %d\n",argv[2]); exit(0); }
/* On Mange le titre du fichier pitch */
fgets(ch,200,file2);
for(debut=pitch=0;fgets(ch,200,file1);)
if (ch[0]==';') printf("%s",ch);
else
{
ch[strlen(ch)-1]='\0';
for(n=0;(ch[n])&&(ch[n]!=' ');n++);
if (ch[n]!=' ') { fprintf(stderr,"bad format in %s\n",argv[1]); exit(0); }
for(++n;(ch[n])&&(ch[n]!=' ')&&(ch[n]!='\n');n++);
ch[n]='\0';
debut=TraitePhoneme(ch,file2,debut,&pitch);
}
exit(0);
}