[Win32 SPEECH SDK] Connection serveur de messagerie POP3



Version5
Ajouté un bouton dans l'interface de configuration pour dire le nom.
La taille des messages est affichée en octets, Ko ou Mo (avant elle était
affichée en octets). Autres modifications minueures.

Télécharger sources + binaires
Télécharger sources Linux GTK+


Version 4
Toute la partie saisie de données en console a été enlevée, car un GUI pour gérer
les boites a été ajouté. Le GUI est lancé automatiquement si le fichier
de stockage n'existe pas. Les deux appli (speech console et GUI) partagent
la partie qui lit/écrit dans le fichier de stockage (l'objet junk).
De plus l'organisation du code a changé: ajout d'un dossier bin.


Compilé sur XP, pourtant le binaire tourne direct sur Win10 (les joies du code natif).

La dll
Sur Windows XP, une très petite dll sert d'interface avec le Speech API,
dont il a fallu ressortir VC6 forcé pour la compiler.
Elle n'expose qu'une seule fonction: say().

Le code de cette dll:
/* Le Speech SDK 5.1 est requis pour compiler cette dll. Avec VC6 créez un projet "Dynamic Link Library" nommé speech dans le dossier Program Files\Microsoft Speech SDK 5.1\Samples\CPP. Dans le menu Project/Project Settings/ C/C++ Project, dans le Combo "Category" choisir "PreProcessor" et ajouter dans "Additionnal Include Directories" ..\..\..\include Puis Onglet Link/Project Options: ajouter /libpath:"..\..\..\Lib\i386" */ #include <stdio.h> #include <sapi.h> #include <tchar.h> #include <atlbase.h> _declspec (dllexport) void say(char *str) { ISpVoice * pVoice = NULL; if (FAILED(::CoInitialize(NULL))) return; HRESULT hr = CoCreateInstance(CLSID_SpVoice, NULL, CLSCTX_ALL, IID_ISpVoice, (void **)&pVoice); if( SUCCEEDED(hr)) { //pVoice->SetRate(-3); wchar_t ws[512]; swprintf( ws, L"%S", str ); hr = pVoice->Speak(ws, SPF_IS_XML, NULL ); pVoice->Release(); pVoice = NULL; } ::CoUninitialize(); } /* On peut changer les paramètres de la voix // Par défaut: //hr = pVoice->Speak(L"Hello world", 0, NULL); // Changer pitch, avec balise XML //hr = pVoice->Speak(L"This sounds normal <pitch middle = '-10'/> but the pitch drops half way through", SPF_IS_XML, NULL ); // Voix plus grave (le "rate" va de -10 à 10) //hr = pVoice->Speak(L"<rate speed='-3'/>You have 42 messages.!", SPF_IS_XML, NULL ); // même effet mais sans XML: pVoice->SetRate(-3); hr = pVoice->Speak(L"you have 42 messages.", 0, NULL ); // Améliore la qualité en 44kHz 16Bit Stereo SPSTREAMFORMAT eFmt = SPSF_44kHz16BitStereo; CSpStreamFormat Fmt; Fmt.AssignFormat(eFmt); hr = m_cpOutAudio->SetFormat( Fmt.FormatId(), Fmt.WaveFormatExPtr() ); hr = pVoice->SetOutput( m_cpOutAudio, FALSE ); */
Ensuite il suffit de linker à la dll et appeler la fonction say( de façon bloquante, ou non bloquante dans un thread.