IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Pause dans une lecture audio d'un fichier. [Débutant]


Sujet :

VB.NET

  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Mai 2004
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 36
    Par défaut Pause dans une lecture audio d'un fichier.
    Bonjour,
    Mon projet est de lire (audio) les données d'un fichier. Je souhaiterai pouvoir écouter les énumérations du fichier tout en me permettant de faire une pause quand je le souhaite et aussi de pouvoir reprendre l'énumération. Je ne sais pas comment coder l'évenement SpeakCompleted.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Private Speech1 As New SpeechSynthesizer
    ....
     
    FileOpen(no, "C:\Users\Controljournalachat\journal.txt", OpenMode.Input)
           While Not EOF(no) 
                   Speech1.SpeakAsync (LineInput(no)) 
                   'permettre une pause
           End While
    FileClose(no)
    Merci d'avance.

  2. #2
    Membre émérite Avatar de -N4w4k-
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2011
    Messages
    545
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2011
    Messages : 545
    Par défaut
    Salut,

    Je souhaiterai pouvoir écouter les énumérations du fichier tout en me permettant de faire une pause quand je le souhaite et aussi de pouvoir reprendre l'énumération.
    Qu'est ce que tu n'arrives pas à faire?

    Pense à baliser ton code (icone #) dans ton précédent message, ça le rendra plus lisible et donnera plus envie aux gens de te lire.

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Mai 2004
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 36
    Par défaut
    Je souhaiterais pouvoir mettre un bouton "pause" qui arrêterai l'énumération(audio) du fichier.
    Un bouton "continuer" permettrai de reprendre l'énumération (audio).

  4. #4
    Membre émérite Avatar de -N4w4k-
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2011
    Messages
    545
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2011
    Messages : 545
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
        Private pause As Boolean = False
     
        Private Sub Main()
            '...
            While Not EOF(no) 
                While Not pause
                    Speech1.SpeakAsync (LineInput(no)) 
                End While
            End While
            '...
        End Sub
     
        Private Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click
            pause = Not pause
        End Sub
    Quelque chose comme ça? le Button1 servirait à mettre/enlever la pause (toggle)...

  5. #5
    Membre averti
    Homme Profil pro
    Inscrit en
    Mai 2004
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 36
    Par défaut
    Citation Envoyé par -N4w4k- Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
        Private pause As Boolean = False
     
        Private Sub Main()
            '...
            While Not EOF(no) 
                While Not pause
                    Speech1.SpeakAsync (LineInput(no)) 
                End While
            End While
            '...
        End Sub
     
        Private Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click
            pause = Not pause
        End Sub
    Quelque chose comme ça? le Button1 servirait à mettre/enlever la pause (toggle)...
    Non, dans ce cas la boucle va trop rapidement.

    Je dois lancer une ligne du fichier. Attendre que la lecture de cette ligne est finie(en audio) et ensuite relancer la lecture de la ligne suivante. Et pendant la lecture(audio) je peux mettre en pause la lecture de la prochaine ligne si nécéssaire.

    Deux solutions :
    - Soit j'arrive à calculer le temps en sec de la lecture de la ligne en cours pour lancer la lecture audio de la prochaine ligne

    - Soit Si il y a un évènement qui determine la fin de la lecture audio ce qui me permettra de lancer la prochaine phrase.

  6. #6
    Membre émérite

    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Israël

    Informations forums :
    Inscription : Mars 2012
    Messages : 691
    Par défaut
    Salut
    peut etre comme ça


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    Imports System.Speech
         Imports System.Speech.Synthesis
     
         Private montext As New List(Of String)
        Dim speaker As New SpeechSynthesizer()
         Private Sub PlayText()
            speaker.Rate = 0
            speaker.Volume = 100
            Try
                For Each phrase In montext
                    speaker.SpeakAsync(phrase)
                Next
            Catch ex As Exception
                MessageBox.Show(ex.Message)
            End Try    
         End Sub
     Private Sub ReadFile(ByVal pathfichier As String)
            Try
                montext = System.IO.File.ReadAllLines(pathfichier).ToList
                RichTextBox1.Clear()
                ListBox1.Items.AddRange(System.IO.File.ReadAllLines(pathfichier))
            Catch ex As Exception
                'en cas d'exception affiche l'erreur 
                MessageBox.Show(ex.Message)
            End Try
     
        End Sub
     
       Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
            ReadFile("C:\Users\Controljournalachat\journal.txt")
        End Sub
     
      Private Sub ButtonPlay_MouseClick(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles ButtonPlay.MouseClick
            speaker.Resume()
            PlayText()
        End Sub  
     
     Private Sub ButtonPause_MouseClick(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles ButtonPause.MouseClick
           speaker.Pause()
     
        End Sub

  7. #7
    Membre averti
    Homme Profil pro
    Inscrit en
    Mai 2004
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 36
    Par défaut
    Un grand merci shayw pour ton aide c'est exactement ce que je souhaitais.

    Merci aussi à -N4w4k-

    pve3

  8. #8
    Membre émérite

    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Israël

    Informations forums :
    Inscription : Mars 2012
    Messages : 691
    Par défaut
    Code améliorié
    avec un seul bouton play/pause

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    Imports System.IO
     Imports System.Speech
     Imports System.Speech.Synthesis
       Private montext As New List(Of String)
       Private speaker As New SpeechSynthesizer()
       private countphrase As Integer
     
       Private Sub speaker_SpeakCompleted(ByVal sender As Object, ByVal e As SpeakCompletedEventArgs)
            countphrase += 1
            If countphrase = montext.Count Then
                ButtonPlay.Text = "Play"
            End If
        End Sub
     
     Private Sub PlayText()
            AddHandler speaker.SpeakCompleted, AddressOf speaker_SpeakCompleted
            speaker.Rate = 0
            speaker.Volume = 100
            Try
                For Each phrase In montext
                    speaker.SpeakAsync(phrase)
                Next
            Catch ex As Exception
                MessageBox.Show(ex.Message)
            End Try   
     End Sub
     
     Private Sub ButtonPlay_MouseClick(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles ButtonPlay.MouseClick
           Try
                If speaker.State = SynthesizerState.Ready Then
                    countphrase = 0
                    PlayText()
                    DirectCast(sender, Button).Text = "Pause"
                ElseIf DirectCast(sender, Button).Text = "Pause" Then
                    speaker.Pause()
                    DirectCast(sender, Button).Text = "Play"
                ElseIf speaker.State = SynthesizerState.Paused Then
                    DirectCast(sender, Button).Text = "Pause"
                    speaker.Resume()
                End If
            Catch ex As Exception
                MessageBox.Show(ex.Message)
            End Try        
        End Sub
     
        Private Sub ReadFile(ByVal pathfichier As String)
            Try
                montext = System.IO.File.ReadAllLines(pathfichier).ToList
                      Catch ex As Exception
                'en cas d'exception affiche l'erreur 
                MessageBox.Show(ex.Message)
            End Try
     
        End Sub
     
       Private Sub Form1_Load(ByVal sender As Object, ByVal e As  System.EventArgs) Handles Me.Load
            ReadFile("C:\Users\Controljournalachat\journal.txt")
             ButtonPlay.Text = "Play"
    End Sub

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 07/07/2009, 12h01
  2. Pause dans une application sans utiliser Sleep()
    Par CriPpLe dans le forum MFC
    Réponses: 9
    Dernier message: 25/03/2006, 11h00
  3. Réponses: 27
    Dernier message: 12/01/2006, 11h04
  4. Marquer une pause dans une procédure stockée
    Par PéPénet dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 08/11/2003, 10h42
  5. Pause dans une boucle
    Par HT dans le forum Langage
    Réponses: 4
    Dernier message: 03/06/2003, 08h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo