Autre langue pour la Reconnaissance vocal de Windows sous VB

cliquetde8 Messages postés 51 Date d'inscription mercredi 23 février 2011 Statut Membre Dernière intervention 29 avril 2015 - 10 juin 2014 à 11:13
CGSI3 Messages postés 416 Date d'inscription vendredi 22 février 2008 Statut Membre Dernière intervention 7 janvier 2018 - 17 juin 2014 à 00:50
Mes salutations,

Je me demandais simplement,
s'il existait une solution pour modifier la voix de la Reconnaissance Vocal de Windows de base celle d'Anna[EN] par celle de Virginie[fr] sous vb, car l'entendre parler en anglais s'est bien mais en français se serait mieux.

Merci pour vos future réponses.
Cordialement,
Cliquetde8.

--

13 réponses

cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
10 juin 2014 à 15:22
Bonjour
Sorry mrs Anna still doesn't speak french maybe next year ?
De toute façon tu dois télécharger la voix de Virginie.
Attention fonctionne seulement sous 32 bit
Ou tu peux te servir du Microsoft.Speech
tu as le system.speech et le Microsoft.Speech
pour se servir du microsoft speech il faut installer

1
http://www.microsoft.com/en-us/download/details.aspx?id=27226
et choisir
x86_MicrosoftSpeechPlatformSDK\MicrosoftSpeechPlatformSDK.msi ou
x64_MicrosoftSpeechPlatformSDK\MicrosoftSpeechPlatformSDK.msi

2
http://www.microsoft.com/en-us/download/details.aspx?id=27225

choisir
x86_SpeechPlatformRuntime\SpeechPlatformRuntime.msi
ou
x64_SpeechPlatformRuntime\SpeechPlatformRuntime.msi

3
http://www.microsoft.com/en-us/download/details.aspx?id=27224
et choisir dans la liste la voix que tu veux
ex
MSSpeech_TTS_fr-FR_Hortense.msi
ou
MSSpeech_TTS_fr-CA_Harmonie.msi


ensuite après avoir installé tout le bazarre
dans ton projet tu dois ajouter la réference microsoft.speech
(pas system speech !)
il faut se servir du browser et aller chercher la dll à
C:\Program Files (x86)\Microsoft SDKs\Speech\v11.0\Assembly

ex de code
Imports Microsoft.Speech.Synthesis
Private synth As SpeechSynthesizer
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
synth = New SpeechSynthesizer
synth.SetOutputToDefaultAudioDevice()
synth.SelectVoice("Microsoft Server Speech Text to Speech Voice (fr-FR, Hortense)")
synth.Rate = 0
synth.SpeakAsync("Bonjour je parle chinois")

end sub
0
Bonsoir a tous,

J'ai donc réessayé la solution donné par cs_shayW pour mon system seven 64bit (des fois que ca marche sous 64bits)

Je m arrete donc ici:
"il faut se servir du browser et aller chercher la dll à
C:\Program Files (x86)\Microsoft SDKs\Speech\v11.0\Assembly "

je confirme que cette référence ne s ajoute pas sur mon PC puisque le répertoire
C:\Program Files (x86)\Microsoft SDKs\Speech
n'est pas créé.
A ce sujet pourrais tu nous donner le nom exact de la DLL?

Une solution que j'avais trouvé, avant d avoir installé Virginie, était de fabriquer un raccourci sur mon bureau et de lancer ce lien.

C:\Windows\SysWOW64\Speech\SpeechUX\sapi.cpl

Cela permettait de modifier certains paramètres et notamment de faire parler virginie.
Mais cette manip doit être effectué a chaque fois que vous allumer le PC, donc assez gênante.
Rien a ajouter sinon

Bonne soirée a vous
0
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
Modifié par cs_ShayW le 11/06/2014 à 10:21
Bonjour
je confirme que cette référence ne s ajoute pas sur mon PC puisque le répertoire
C:\Program Files (x86)\Microsoft SDKs\Speech
n'est pas créé.

As tu bien tout téléchargé le sdk ,le runtime et la voix ?(3 composants)

la dll est nommé Microsoft.Speech.dll
0
CGSI3 Messages postés 416 Date d'inscription vendredi 22 février 2008 Statut Membre Dernière intervention 7 janvier 2018 1
Modifié par CGSI3 le 15/06/2014 à 22:40
Bonsoir Cs_ShayW,

Merci pour ton aide

j ai donc 3 fichiers téléchargés
MicrosoftSpeechPlatformSDK.msi de 8 900 ko
SpeechPlatformRuntime.msi de 2 612 ko
MSSpeech_TTS_fr-CA_Harmonie.msi de 22 592 ko

Sous Seven 64bits , j'ai trouvé la DLL dans ce répertoire
C:\Program Files\Microsoft SDKs\Speech\v11.0\Assembly

j ai copié la DLL sous le répertoire C:\windows\sysWOW64

Ensuite j essai de l'enregistrer en executant sous la forme administrateur
la commande regsvr32 sous le repertoire C:\windows\sysWOW64

mais le message suivant m'apparait :

Le Module <microsoft.speech.dll> a été chargé, mais le point d'entrée DllRegisterServer est introuvable.
Verifiez que <microsoft.speech.dll> est un fichier DLL ou OCX valide, puis réessayez

Je bloque donc a ce niveau
Bonne prog CGSI3
0
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
15 juin 2014 à 23:23
Bonjour
Pourquoi as tu besoin de copier la dll dans syswow64
Tu veux te servir de la voix d'Hortense avec sapi.cpl ?
0
CGSI3 Messages postés 416 Date d'inscription vendredi 22 février 2008 Statut Membre Dernière intervention 7 janvier 2018 1
Modifié par CGSI3 le 16/06/2014 à 00:27
Bonsoir,

La voix d'Hortense ne s affiche pas dans la liste des voix de sapi.cpl
Par contre j'avais réussi a installer virginie qui elle s'affiche bien dans la liste.

En fait quand je veux lancer mon appli,
le programme plante lors de l'appel a la DLL en me faisant ce message

Une exception non gérée du type 'System.Runtime.InteropServices.COMException' s'est produite dans Microsoft.Speech.dll

Informations supplémentaires : La récupération de la fabrique de classes COM pour le composant avec le CLSID {D941651C-44E6-4C17-BADF-C36826FC3424} a échoué en raison de l'erreur suivante : 80040154 Classe non enregistrée (Exception de HRESULT : 0x80040154 (REGDB_E_CLASSNOTREG)).


Bref j en suis même a douter d'avoir télécharger les bon fichiers mais je ne pense pas avoir fais d'erreur.

Je suis un peu HS ce soir je verrai demain si je peux avancer ce pb
Bonne prog CGSI3

--
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
16 juin 2014 à 08:06
La voix d'Hortense ne s affiche pas dans la liste des voix de sapi.cpl
Par contre j'avais réussi a installer virginie qui elle s'affiche bien dans la liste.

je pense que les voix de sap.cpl font emploie du system.speech
http://stackoverflow.com/questions/2977338/what-is-the-difference-between-system-speech-recognition-and-microsoft-speech-re
0
CGSI3 Messages postés 416 Date d'inscription vendredi 22 février 2008 Statut Membre Dernière intervention 7 janvier 2018 1
Modifié par CGSI3 le 16/06/2014 à 11:19
Bonjour

J'ajoute juste ce lien qui avait été abordé concernant ce sujet
http://codes-sources.commentcamarche.net/forum/affich-10027806-projet-d-installation-avec-fichiers-redistributables

Je viens de passer le problème de référence de la DLL.

Pour éviter cette erreur vous devez modifier la compilation de AnyCPU en x64 comme cible (tout simple mais il fallait y penser ..)

Je continu pour voir si j'arrive a utiliser les voix dans mon appli

Voici aussi pour vérifier les voix installés, virginie n'apparaît pas bien qu'elle soit affiché dans le sapi.cpl

      Public Sub InstallVoice(Optional ByVal args As String() = Nothing)
            ' Initialize a new instance of the SpeechSynthesizer.
            Using synth As New SpeechSynthesizer()

                ' Output information about all of the installed voices. 
                Console.WriteLine("Installed voices -")
                For Each voice As InstalledVoice In synth.GetInstalledVoices()
                    Dim info As VoiceInfo = voice.VoiceInfo
                    Dim AudioFormats As String = ""
                    For Each fmt As SpeechAudioFormatInfo In info.SupportedAudioFormats
                        AudioFormats += [String].Format("{0}" & Chr(10) & "", fmt.EncodingFormat.ToString())
                    Next

                    Console.WriteLine(" Name:          " + info.Name)
                    Console.WriteLine(" Culture:       " & info.Culture.ToString)
                    Console.WriteLine(" Age:           " + info.Age.ToString)
                    Console.WriteLine(" Gender:        " + info.Gender.ToString)
                    Console.WriteLine(" Description:   " + info.Description)
                    Console.WriteLine(" ID:            " + info.Id)
                    Console.WriteLine(" Enabled:       " + voice.Enabled.ToString)
                    If info.SupportedAudioFormats.Count <> 0 Then
                        Console.WriteLine(" Audio formats: " + AudioFormats)
                    Else
                        Console.WriteLine(" No supported audio formats found")
                    End If

                    Dim AdditionalInfo As String = ""
                    For Each key As String In info.AdditionalInfo.Keys
                        AdditionalInfo += [String].Format("  {0}: {1}" & Chr(10) & "", key, info.AdditionalInfo(key))
                    Next

                    Console.WriteLine(" Additional Info - " + AdditionalInfo)
                    Console.WriteLine()
                Next
            End Using
            Console.WriteLine("end of Voice     exit...")
        End Sub



VIRGINIE
synth.SelectVoice("ScanSoft Virginie_Dri40_16kHz")
(Pour virginie j'ai une erreur de ce type)

Une exception non gérée du type 'System.ArgumentException' s'est produite dans Microsoft.Speech.dll
Informations supplémentaires : Cannot set voice. No matching voice is installed or the voice was disabled.


HARMONIE
synth.SelectVoice("Microsoft Server Speech Text to Speech Voice (fr-CA, Harmonie)")

( j'ai découvert cette nouvelle voix que j'avais du installer il y a longtemps et qui n'apparaît pas dans le sapi.cpl

Mon appli fonctionne donc avec harmonie sans planter mais la voix ne sort toujours pas du PC (le son est activé)

Par contre si je ne choisi aucune voix et vu qu'auparavant j'avais choisi virginie dans sapi.cpl , l'appli fonctionne parfaitement avec une voix audible et assez frenchy je dirai


--
0
CGSI3 Messages postés 416 Date d'inscription vendredi 22 février 2008 Statut Membre Dernière intervention 7 janvier 2018 1
16 juin 2014 à 11:39
rectif c'est la voix par défaut qui s'exprime (pas virginie) , bien que bizarrement elle soit maintenant sélectionné par défaut dans le sapi.cpl lors de l'initialisation de l'ordi.

--
0
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
Modifié par cs_ShayW le 16/06/2014 à 12:50
Quel namespace as tu écris ?
Imports System.Speech
Imports System.Speech.Synthesis
ou
Imports Microsoft.Speech.Synthesis
0
CGSI3 Messages postés 416 Date d'inscription vendredi 22 février 2008 Statut Membre Dernière intervention 7 janvier 2018 1
Modifié par CGSI3 le 16/06/2014 à 13:57
J ai ce code assez simple:

Imports Microsoft.Speech
Imports Microsoft.Speech.Synthesis

Public Class Form2

    Private Sub Form2_DoubleClick(sender As Object, e As EventArgs) Handles Me.DoubleClick
        Dim synth As Microsoft.Speech.Synthesis.SpeechSynthesizer
        synth = New SpeechSynthesizer
        synth.SetOutputToDefaultAudioDevice()
        synth.SelectVoice("ScanSoft Virginie_Dri40_16kHz")
        'synth.SelectVoice("Microsoft Server Speech Text to Speech Voice (fr-CA, Harmonie)")
 
        synth.Rate = 0
        synth.SpeakAsync("Bonjour je suis virginie")
    End Sub

End Class


Mais je m'interroge plutôt sur le fait que le sapi.cpl me donne une liste avec Anna et virginie (juste elle 2) mais ne me donne pas Harmonie alors que la fonction donné plus haut me donne Harmonie sans citer Anna et Virginie bref j approfondi

Les voix sont listées dans l'éditeur de registre "regedit" (HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Speech\Voices\Tokens).

voici plusieurs liens utiles
http://forums.cnetfrance.fr/topic/1209624-narrateur-windows--ajouter-une-voix-de-synthese-francophone/

http://www.commentcamarche.net/forum/affich-25474882-restaurer-voix-windows-7-64

je remet ici : liens pour la voix Virginie et autres :
http://idee-association.org/wp-content/uploads/2011/08/RSSolo4French.zip
http://www.mta.alainlapierre.com/co/synthese.html

et ce petit programme de diction
http://d2061412.instant.xoom.it/dspeech.html
--
0
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
16 juin 2014 à 14:11
La voix de Virginie s'utilise avec le namespace System.Speech et
System.Speech.Synthesis

ne pas confondre avec
Microsoft.Speech et Microsoft.Speech.Synthesis

donc si tu veux utiliser Virgine
Imports System.Speech
Imports System.Speech.Synthesis
Private synth As SpeechSynthesizer
Public Class Form2

Private Sub Form2_DoubleClick(sender As Object, e As EventArgs) Handles Me.DoubleClick
synth = New SpeechSynthesizer
synth.SelectVoice("ScanSoft Virginie_Dri40_16kHz")
synth.Rate = 0
synth.SpeakAsync("Bonjour je suis virginie")
End Sub

pour la voix d'hortense
Imports Microsoft.Speech.Synthesis
Private synth As SpeechSynthesizer
Private Sub Form2_DoubleClick(sender As Object, e As EventArgs) Handles Me.DoubleClick
synth = New SpeechSynthesizer
synth.SetOutputToDefaultAudioDevice()
synth.SelectVoice("Microsoft Server Speech Text to Speech Voice (fr-FR, Hortense)")
synth.Rate = 0
synth.SpeakAsync("Bonjour je suis Hortense")
End Sub
0
CGSI3 Messages postés 416 Date d'inscription vendredi 22 février 2008 Statut Membre Dernière intervention 7 janvier 2018 1
Modifié par CGSI3 le 16/06/2014 à 15:22
Cs_ShayW, avec ton exemple, j ai compris l'essentiel

Il faut ajouter la réference system.speech du framework4

Voici la fonction modifiée pour System.Speech et j'ai bien la voix d'Anna qui s'affiche
Je suis en train de voir pourquoi Virginie ne s'affiche pas mais tu m'as déjà largement éclaircie le problème. Grand merci

je suis en train de regarder de ce coté :
Les voix sont listées dans l'éditeur de registre "regedit" (HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Speech\Voices\Tokens).

    Public Shared Sub VoiceList(Optional ByVal args As String() = Nothing)
        ' Initialize a new instance of the SpeechSynthesizer.
        Using synth As New System.Speech.Synthesis.SpeechSynthesizer

            ' Output information about all of the installed voices. 
            Console.WriteLine("Installed voices -")
            For Each voice As InstalledVoice In synth.GetInstalledVoices()
                Dim info As VoiceInfo = voice.VoiceInfo
                Dim AudioFormats As String = ""
                For Each fmt As System.Speech.AudioFormat.SpeechAudioFormatInfo In info.SupportedAudioFormats
                    AudioFormats += [String].Format("{0}" & Chr(10) & "", fmt.EncodingFormat.ToString())
                Next

                Console.WriteLine(" Name:          " + info.Name)
                Console.WriteLine(" Culture:       " & info.Culture.ToString)
                Console.WriteLine(" Age:           " + info.Age.ToString)
                Console.WriteLine(" Gender:        " + info.Gender.ToString)
                Console.WriteLine(" Description:   " + info.Description)
                Console.WriteLine(" ID:            " + info.Id)
                Console.WriteLine(" Enabled:       " + voice.Enabled.ToString)
                If info.SupportedAudioFormats.Count <> 0 Then
                    Console.WriteLine(" Audio formats: " + AudioFormats)
                Else
                    Console.WriteLine(" No supported audio formats found")
                End If

                Dim AdditionalInfo As String = ""
                For Each key As String In info.AdditionalInfo.Keys
                    AdditionalInfo += [String].Format("  {0}: {1}" & Chr(10) & "", key, info.AdditionalInfo(key))
                Next

                Console.WriteLine(" Additional Info - " + AdditionalInfo)
                Console.WriteLine()
            Next
        End Using
        Console.WriteLine("end of Voice     exit...")
    End Sub


Microsoft.Speech utilise les voix et les bibliothèques de Microsoft Speech Server
La voix française de Virginie ne fonctionne qu'en 32 bits.

donc j ai du remodifier la compilation de x64 en x86 comme cible
et miracle Virginie me parle ....

encore merci et bonne prog


--
0
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
16 juin 2014 à 16:05
je teste avec ton code
Imports System.Speech
Imports System.Speech.Synthesis
Imports System.Speech.AudioFormat
Public Sub InstallVoice(Optional ByVal args As String() = Nothing)
' Initialize a new instance of the SpeechSynthesizer.
Using synth As New SpeechSynthesizer()

' Output information about all of the installed voices.
Console.WriteLine("Installed voices -")
For Each voice As InstalledVoice In synth.GetInstalledVoices()
Dim info As VoiceInfo = voice.VoiceInfo
Dim AudioFormats As String = ""
For Each fmt As SpeechAudioFormatInfo In info.SupportedAudioFormats
AudioFormats += [String].Format("{0}" & Convert.ToChar(10) & "", fmt.EncodingFormat.ToString())
Next

Console.WriteLine(" Name: " + info.Name)
Console.WriteLine(" Culture: " & info.Culture.ToString)
Console.WriteLine(" Age: " + info.Age.ToString)
Console.WriteLine(" Gender: " + info.Gender.ToString)
Console.WriteLine(" Description: " + info.Description)
Console.WriteLine(" ID: " + info.Id)
Console.WriteLine(" Enabled: " + voice.Enabled.ToString)
If info.SupportedAudioFormats.Count <> 0 Then
Console.WriteLine(" Audio formats: " + AudioFormats)
Else
Console.WriteLine(" No supported audio formats found")
End If

Dim AdditionalInfo As String = ""
For Each key As String In info.AdditionalInfo.Keys
AdditionalInfo += [String].Format(" {0}: {1}" & Convert.ToChar(10) & "", key, info.AdditionalInfo(key))
Next

Console.WriteLine(" Additional Info - " + AdditionalInfo)
Console.WriteLine()
Next
End Using
Console.WriteLine("end of Voice exit...")
End Sub


j'ai bien la voix de Virginie dans la liste



je suis en train de regarder de ce coté :
Les voix sont listées dans l'éditeur de registre "regedit" (HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Speech\Voices\Tokens).

pas la voix de virginie
0
CGSI3 Messages postés 416 Date d'inscription vendredi 22 février 2008 Statut Membre Dernière intervention 7 janvier 2018 1
17 juin 2014 à 00:50
re

en reboutant l ordi tout c est réglé,
Virginie s'affiche bien dans la liste (installvoice)
et elle me parle sans aucun soucis
Merci encore ++

--
0
Rejoignez-nous