Spanish Enlazar "wrap" TTS español

Discussion in 'Spanish Forum' started by CANCUNATNIGHT, Dec 20, 2007.

  1. CANCUNATNIGHT

    CANCUNATNIGHT Member

    Saludos a todos, soy relativamente nuevo en este foro y he estado leyendo threads que me están resultando muy interesantes y educativos en mis primeros pasitos con Basic4PPC.
    Sobre todo me he interesado por los mensajes sobre librerías TTS para que hable la "bicha"
    He probado la librería FLITE (que habla en inglés) y se me ha ocurrido probar otra que habla supuestamente en español, dentro del diccionario Lingvosoft Talking Dicc English Spanish hay una librería de TTS español llamada TTS_SPA.DLL (supongo que no será delito cacharrear sin ánimo de lucro con librerías de terceros) y he preparado un enlace mediante TTSWRAP.DLL para que se pueda invocar desde Basic4PPC.
    Bueno hasta aquí bien, pero solo consigo que pronuncie la primera letra del texto deseado.
    No sé si alguien sabe como resolver el problema. ¿Como conseguir que pronuncie la frase completa?
    Adjunto la librería y el enlazador por si quereis probarlo.

    Felices Pascuas
     

    Attached Files:

    • TTS.zip
      File size:
      60 KB
      Views:
      131
  2. Nkieto

    Nkieto Member Licensed User

    ¿Funciona en Desktop, o solo en PPC?
     
  3. CANCUNATNIGHT

    CANCUNATNIGHT Member

    La versión desktop

    La librería posteada antes solo es para la PDA.
    Ahora posteo lo mismo pero con una librería TTS_SPA.DLL de versión windows.
    Curiosamente en este caso pronuncia toda la frase que se teclee. Claro compilándolo para Desktop y ejecutándolo en el PC.
    Saludos,
     

    Attached Files:

  4. agraham

    agraham Expert Licensed User

    I can just about read, but not write Spanish. I had a similar effect porting the Flite library. .NET strings are UTF-16 but the C based Flite code wanted ASCI strings so Flite saw the first character then a zero which it treated as end of string. I had to repack the string to make it work.
     
  5. CANCUNATNIGHT

    CANCUNATNIGHT Member

    Thanks

    English:
    First one, thanks for your answer Agraham.
    I supose that the string conversion from UTF16 to ASCII encode must be done into the original dll (in my case in TTS_SPA.DLL), so I can't continue (the DLL is from Lingvosoft and I have no permission for dissassemble)
    Or is it possible make it in C#, into the wrapp dll?

    Merry Christmas:)
    ------
    Now spanish:
    Lo primero, gracias por tu respuesta Agraham.
    Supongo que la conversión de la cadena de la codificación UTF16 a la de ASCII debe realizarse dentro de la librería original (en mi caso TTS_SPA.DLL), en ese caso no puedo continuar (la librería es propiedad de Lingvosoft y no tengo permiso para desensamblarla).
    ¿O es posible que la conversión pueda hacerse desde C#, dentro del enlazador wrap?
    Feliz Navidad.:)
     
  6. agraham

    agraham Expert Licensed User

    You could try encoding the string into a byte array as UTF-8, stick a 0 after the last byte of the string to terminate it and pass the byte array.
    Code:
    using System;
    using System.Text;
    class UTF8EncodingExample {
        
    public static void Main() {
            // Create a UTF-
    8 encoding.
            UTF8Encoding utf8 = new UTF8Encoding();
            
            // A Unicode 
    string with two characters outside an 8-bit code range.
            
    String unicodeString =
                
    "This unicode string contains two characters " +
                
    "with codes outside an 8-bit code range, " +
                
    "Pi (\u03a0) and Sigma (\u03a3).";
            Console.WriteLine(
    "Original string:");
            Console.WriteLine(unicodeString);

            // Encode the 
    string.
            Byte[] encodedBytes = utf8.GetBytes(unicodeString);
            Console.WriteLine();
            Console.WriteLine(
    "Encoded bytes:");
            foreach (Byte b 
    in encodedBytes) {
                Console.Write(
    "[{0}]", b);
            
    }
            Console.WriteLine();
            
            // Decode bytes back to string.
            // Notice Pi and Sigma characters are still present.
            String decodedString = utf8.GetString(encodedBytes);
            Console.WriteLine();
            Console.WriteLine("Decoded bytes:");
            Console.WriteLine(decodedString);
        }
    }
     
  7. CANCUNATNIGHT

    CANCUNATNIGHT Member

    Solucionado TTS español device

    Gracias a la pista que remite Agraham, he enlazado la librería de voz y ahora parece que funciona bien. Pronuncia toda la frase, reconoce vocales acentuadas, la ñ y demás caracteres españoles.
    El código que he incluido en el enlazador "wrap" TTSwrap.dll es el siguiente:
    ------------------------------------------------------------------------
    Thanks to Agraham for his trail, I have wrapped the TTS library and now, it seems to speak all the sentence, it admits accentuated vocal, the ñ character and others spanish symbols.
    The code included for the class in the ttswrap.dll is the follow:

    -----------------------------------------------------------------------
    namespace Ttswrap
    {
    using System;
    using System.Runtime.InteropServices;

    public class esp : IDisposable
    {
    public esp()
    {
    Init_TTS();
    }
    [DllImport("TTS_spa.dll")]
    private static extern void DeInit_TTS();
    public void Dispose()
    {
    DeInit_TTS();
    }
    [DllImport("TTS_spa.dll")]
    private static extern void Init_TTS();
    [DllImport("TTS_spa.dll")]
    private static extern int Say_TTS(byte[] texto);

    public int Voz(string texto)
    {
    return Say_TTS(System.Text.UnicodeEncoding.Default.GetBytes(texto));
    }
    }
    }
    -------------------------------------------------------------------------

    Happy New Year
     

    Attached Files:

  8. Pachuquin

    Pachuquin Member Licensed User

    Felicidades, funciona perfecto.

    Una pregunta: ¿Puedo usarla legalmente en mis programas o tengo que pagar alguna licencia por el TTS_SPA.DLL?

    Gracias
     
  9. manu

    manu Active Member Licensed User

    Alucinante.

    No sabia que estaba esto en el foro, lo he probado y funciona correctamente, es una gran aportación, espero que se pueda utilizar legalmente.
     
  10. lordmemo5

    lordmemo5 New Member

    FLITE? dictado?

    Hola, tienen de casualidad un dll funcionando de FLITE (TTS Ingles) porque no logro compilarlo ni implementarlo alguien sabe de esto?

    Por otro lado alguien tiene conocimiento si hay SDK o API existente para reconocimiento de voz en modo dictado?

    Hi there, does any of you has a FLITE dll working (TTS english) because i haven't acomplish to compile or run it on a WM app, does any one knows something about this?

    on the other hand, someone has any knowloadge about voice recognition (STT) on dictation mode, not comand???
     
  11. timiotuls

    timiotuls New Member

    podria funcionar con la voz de jorge loquendo viene para ppc
     
  12. javilargo

    javilargo New Member Licensed User

    Alucinante, un gran trabajo. Muchísimas gracias por tu esfuerzo.
     
  13. Maki25

    Maki25 Member Licensed User

    Hola a todos,

    con la nueva versión de Basic4PPC no funciona esta .dll. Da error cuando la cargas con la PPC. En el pc de sobremesa funciona correctamente, pero con esta nueva versión no va en la pda:BangHead:¿?
    Me he dado cuenta que la ñ no es reconocida en la nueva versión, ya que para poder utilizar mis aplicaciones me he tenido que borrar la letra "ñ" de todas mis aplicaciones que estaban colocadas como variables (frmAñadir, txtañade.text ...):sign0148:

    un saaludo
    maki
     
  14. Maki25

    Maki25 Member Licensed User

    Deciros que si que funciona, tenía mal mi configuración:sign0089:
     
  15. pumax

    pumax New Member

    Hola a todos,
    Como enlazaron la voz en español por que e intentado de muchos modos y no ha funcionado, es para la versión de pc
     
Loading...