Spanish Enlazar "wrap" TTS español

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
 

Attachments

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,
 

Attachments

agraham

Expert
Licensed User
Bueno hasta aquí bien, pero solo consigo que pronuncie la primera letra del texto deseado.
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.
 
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.:)
 

agraham

Expert
Licensed User
Or is it possible make it in C#, into the wrapp dll?
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.
B4X:
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);
    }
}
 
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
 

Attachments

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
 

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.
 

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???
 

javilargo

New Member
Licensed User
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...
Alucinante, un gran trabajo. Muchísimas gracias por tu esfuerzo.
 

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
 

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
Deciros que si que funciona, tenía mal mi configuración:sign0089:
 

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
 
Top