Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - problemi con il TTS(text to speech)
Forum - C/C++ - problemi con il TTS(text to speech)

Avatar
Angel3x (Ex-Member)
Newbie


Messaggi: 9
Iscritto: 29/01/2008

Segnala al moderatore
Postato alle 23:30
Mercoledì, 14/05/2008
Codice sorgente - presumibilmente C#

  1. int i ;
  2.         ISpVoice * pVoice ;
  3.         char app[1000] ;
  4.         for(i=0;i<this->richTextBox1->TextLength;i++)
  5.                 {
  6.                         app[i]=this->richTextBox1->Text[i] ;
  7.                 }
  8.     if (FAILED(::CoInitialize(NULL)))
  9.         return ;
  10.  
  11.         HRESULT hr = CoCreateInstance(CLSID_SpVoice, NULL, CLSCTX_ALL, IID_ISpVoice, (void **)&pVoice);
  12.     if( SUCCEEDED( hr ) )
  13.     {
  14.                 hr = pVoice->Speak((const WCHAR *)app, 0, NULL);
  15.         pVoice->Release();
  16.         pVoice = NULL;
  17.         // Change pitch
  18.                
  19.     }
  20.     ::CoUninitialize();
  21.                  }



Il codice è perfettamente funzionante,l'unico problema è che non parte la funzione Speak(),non viene sintettizato il testo presente nell'array.Qualcuno sa dirmi xke??

PM Quote
Avatar
gantonio (Normal User)
Guru^2


Messaggi: 1532
Iscritto: 09/09/2007

Segnala al moderatore
Postato alle 7:24
Giovedì, 15/05/2008
Controlla il valore della variabile hr ...

PM Quote
Avatar
Angel3x (Ex-Member)
Newbie


Messaggi: 9
Iscritto: 29/01/2008

Segnala al moderatore
Postato alle 12:24
Giovedì, 15/05/2008
il valore di hr è 0....

PM Quote
Avatar
gantonio (Normal User)
Guru^2


Messaggi: 1532
Iscritto: 09/09/2007

Segnala al moderatore
Postato alle 14:07
Giovedì, 15/05/2008
Fai una prova scrivendo

hr = pVoice->Speak(L"testo di prova", 0, NULL);

PM Quote
Avatar
Angel3x (Ex-Member)
Newbie


Messaggi: 9
Iscritto: 29/01/2008

Segnala al moderatore
Postato alle 19:04
Giovedì, 15/05/2008
Così funziona,il valore di hr dopo pVoice->speak() e sempre 0...
Non riesco a capire perchè se la passo così funziona e se la passo diversamente nn funziona.aiuto.....:-?

PM Quote
Avatar
gantonio (Normal User)
Guru^2


Messaggi: 1532
Iscritto: 09/09/2007

Segnala al moderatore
Postato alle 20:13
Giovedì, 15/05/2008
Beh ... mi sa che la stringa non deve essere ANSI ma UNICODE e quindi devi dichiararla con

WCHAR app[1000];

e sicuramente il codice seguente

for(i=0;i<this->richTextBox1->TextLength;i++)
{
app=this->richTextBox1->Text ;
}

non ha senso ... cosa dovrebbe fare?

PM Quote
Avatar
Angel3x (Ex-Member)
Newbie


Messaggi: 9
Iscritto: 29/01/2008

Segnala al moderatore
Postato alle 21:09
Giovedì, 15/05/2008
Codice sorgente - presumibilmente Plain Text

  1. for(i=0;i<this->richTextBox1->TextLength;i++)
  2. {
  3. app=this->richTextBox1->Text ;
  4. }

scusa ma ti ho dato il codice sbagliato.quello giusto è:

Codice sorgente - presumibilmente Plain Text

  1. for(i=0;i<this->richTextBox1->TextLength;i++)
  2. {
  3. app[i]=System::convert::tochar(this->richTextBox1->Text[i]) ;
  4. ...
  5. ...
  6. }


cmq adesso provo come hai detto tu...ti faccio sapere subito.
Grazie

:k:

PM Quote
Avatar
Angel3x (Ex-Member)
Newbie


Messaggi: 9
Iscritto: 29/01/2008

Segnala al moderatore
Postato alle 21:16
Giovedì, 15/05/2008
ahhhhh,grazie 1000,il problema era proprio quello della codifica UNICODE invece della codifica ANSI.veramente grazie.c;)

PM Quote