views:

265

answers:

1

Hi,

I want to use Festival TTS API with CodeBlocks. I have created a new project, and added in build options>linker settings:

  • libFestival.a
  • libestools.a
  • libestbase.a
  • libeststring.a

I also added in the global compiler settings>search directories>compiler:

  • festival\src\include
  • speech_tools\include

I am using gnu gcc compiler (mingw version of codeblocks) and this is my program:

 #include <iostream>
#include "festival.h"

using namespace std;



int main(int argc, char **argv)
{
    EST_Wave wave;
    int heap_size = 210000;  // default scheme heap size
    int load_init_files = 1; // we want the festival init files loaded

    festival_initialize(load_init_files,heap_size);

    // Say simple file
    festival_say_file("/etc/motd");

    festival_eval_command("(voice_ked_diphone)");
    // Say some text;
    festival_say_text("hello world");

    // Convert to a waveform
    festival_text_to_wave("hello world",wave);
    wave.save("/tmp/wave.wav","riff");

    // festival_say_file puts the system in async mode so we better
    // wait for the spooler to reach the last waveform before exiting
    // This isn't necessary if only festival_say_text is being used (and
    // your own wave playing stuff)
    festival_wait_for_spooler();

    return 0;
}

Build log:

-------------- Build: Debug in ejecutable ---------------

Compiling: main.cpp
In file included from C:\0621\source\build\speech_tools\include/EST_error.h:54,
                 from C:\0621\source\build\speech_tools\include/EST_Val.h:52,
                 from C:\0621\source\build\speech_tools\include/EST_FMatrix.h:47,
                 from C:\0621\source\build\speech_tools\include/EST_types.h:47,
                 from C:\0621\source\build\speech_tools\include/EST_string_aux.h:45,
                 from C:\0621\source\build\speech_tools\include/EST.h:49,
                 from C:\0621\source\build\festival\src\include/festival.h:47,
                 from C:\0621\source\build\ejecutable\main.cpp:2:
C:\0621\source\build\speech_tools\include/EST_unix.h:53:25: error: sys/wait.h: No such file or directory
C:\0621\source\build\speech_tools\include/EST_unix.h:54:29: error: sys/resource.h: No such file or directory
Process terminated with status 1 (0 minutes, 0 seconds)
2 errors, 0 warnings

EDIT: I installed Cygwin, and added the cygwin/usr/include folder in the search directories. Now I have:

-------------- Build: Debug in ejecutable ---------------

Compiling: main.cpp
In file included from C:\0621\source\build\speech_tools\include/EST_io_aux.h:74,
                 from C:\0621\source\build\speech_tools\include/EST.h:56,
                 from C:\0621\source\build\festival\src\include/festival.h:47,
                 from C:\0621\source\build\ejecutable\main.cpp:2:
c:\archivos de programa\codeblocks\mingw\bin\../lib/gcc/mingw32/4.4.1/../../../../include/Winsock2.h:103:2: warning: #warning "fd_set and associated macros have been defined in sys/types.      This may cause runtime problems with W32 sockets"
In file included from c:\archivos de programa\codeblocks\mingw\bin\../lib/gcc/mingw32/4.4.1/include/c++/bits/postypes.h:42,
                 from c:\archivos de programa\codeblocks\mingw\bin\../lib/gcc/mingw32/4.4.1/include/c++/iosfwd:42,
                 from c:\archivos de programa\codeblocks\mingw\bin\../lib/gcc/mingw32/4.4.1/include/c++/ios:39,
                 from c:\archivos de programa\codeblocks\mingw\bin\../lib/gcc/mingw32/4.4.1/include/c++/ostream:40,
                 from c:\archivos de programa\codeblocks\mingw\bin\../lib/gcc/mingw32/4.4.1/include/c++/iostream:40,
                 from C:\0621\source\build\ejecutable\main.cpp:1:
c:\archivos de programa\codeblocks\mingw\bin\../lib/gcc/mingw32/4.4.1/include/c++/cwchar:249: error: '::wcstold' has not been declared
c:\archivos de programa\codeblocks\mingw\bin\../lib/gcc/mingw32/4.4.1/include/c++/cwchar:266: error: '__gnu_cxx::wcstold' has not been declared
In file included from C:\0621\source\build\festival\src\include/festival.h:42,
                 from C:\0621\source\build\ejecutable\main.cpp:2:
c:\archivos de programa\codeblocks\mingw\bin\../lib/gcc/mingw32/4.4.1/include/c++/cstdlib:195: error: '::strtold' has not been declared
c:\archivos de programa\codeblocks\mingw\bin\../lib/gcc/mingw32/4.4.1/include/c++/cstdlib:215: error: '__gnu_cxx::strtold' has not been declared
In file included from C:\cygwin\usr\include/sys/wait.h:15,
                 from C:\0621\source\build\speech_tools\include/EST_unix.h:53,
                 from C:\0621\source\build\speech_tools\include/EST_error.h:54,
                 from C:\0621\source\build\speech_tools\include/EST_Val.h:52,
                 from C:\0621\source\build\speech_tools\include/EST_FMatrix.h:47,
                 from C:\0621\source\build\speech_tools\include/EST_types.h:47,
                 from C:\0621\source\build\speech_tools\include/EST_string_aux.h:45,
                 from C:\0621\source\build\speech_tools\include/EST.h:49,
                 from C:\0621\source\build\festival\src\include/festival.h:47,
                 from C:\0621\source\build\ejecutable\main.cpp:2:
C:\cygwin\usr\include/sys/resource.h:76: error: 'id_t' has not been declared
C:\cygwin\usr\include/sys/resource.h:77: error: 'id_t' has not been declared
In file included from C:\cygwin\usr\include/dirent.h:6,
                 from C:\0621\source\build\speech_tools\include/EST_unix.h:55,
                 from C:\0621\source\build\speech_tools\include/EST_error.h:54,
                 from C:\0621\source\build\speech_tools\include/EST_Val.h:52,
                 from C:\0621\source\build\speech_tools\include/EST_FMatrix.h:47,
                 from C:\0621\source\build\speech_tools\include/EST_types.h:47,
                 from C:\0621\source\build\speech_tools\include/EST_string_aux.h:45,
                 from C:\0621\source\build\speech_tools\include/EST.h:49,
                 from C:\0621\source\build\festival\src\include/festival.h:47,
                 from C:\0621\source\build\ejecutable\main.cpp:2:
C:\cygwin\usr\include/sys/dirent.h:24: error: '__ino64_t' does not name a type
Process terminated with status 1 (0 minutes, 0 seconds)
7 errors, 1 warnings

EDIT: If I change the compiler to Cygwin:

-------------- Build: Debug in ejecutable ---------------

Compiling: main.cpp
Execution of 'g++.exe -Wall -fexceptions  -Wall -g    -IC:/0621/source/build/festival/src/include -IC:/0621/source/build/speech_tools/include  -c C:/0621/source/build/ejecutable/main.cpp -o obj/Debug/main.o' in 'C:\0621\source\build\ejecutable' failed.
Nothing to be done.

Any idea?

+1  A: 

You need to use the cygwin compilers, not the mingw ones. There are lots of runtime-environment specific headers and libs which are incompatible between the two systems, which easily get included when the wrong compiler is used. Also the cygwin compilers does contain different patches than the mingw compilers.

Rudi
So, it would be possible to use CodeBlocks+gnugcc(mingw)+Festival? Or I must compile it with Cygwin? Can't I use an IDE?
andofor
You can set the cygwin compiler in the global "compiler ad debugger settings" dialog. When you don't want to set the compiler for every project, you can also use CMake to generate the IDE control files.
Rudi
Thanks @Rudi. Well, I changed the build options of the project, and now the compiler is cygwin. I have this:-------------- Build: Debug in ejecutable ---------------Compiling: main.cppExecution of 'g++.exe -Wall -fexceptions -g -IC:/0621/source/build/festival/src/include -IC:/0621/source/build/speech_tools/include -c C:/0621/source/build/ejecutable/main.cpp -o obj/Debug/main.o' in 'C:\0621\source\build\ejecutable' failed.Nothing to be done.
andofor
Try to see in the build log tab why the compiler complained.
Rudi
I am sorry, but I don't know. The message above is the build log.
andofor