none
Como utilizar todos os microfones disponíveis no sistema pra reconhecimento de voz? RRS feed

  • Pergunta

  • Boa noite, 

    Eu utilizo o Microsoft.Speech.Recognition para reconhecimento de voz em C#, mas esta funcionando com o microfone padrão por meio da definição sre.SetInputToDefaultAudioDevice(), pesquisei sobre e vi muitos falando que devo utilizar o método SetInputToAudioStream, mas como vou pegar os audios que estão rolando nos microfones todos?

    Alguém tem ídeia de como fazer isso ?  

    Desde já agradeço.

    domingo, 4 de agosto de 2019 21:50

Todas as Respostas

  • Boa tarde, tudo bem?

    O método SetInputToAudioStream trabalha com uma stream por vez, não sendo possível 'mesclar' streams, de qual forma você pretende ler múltiplas streams de audio simultaneamente? 

    Atenciosamente, 


    Igor F. Kunrath

    Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita

    MSDN Community Support

    Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    quarta-feira, 7 de agosto de 2019 19:30
    Moderador
  • Boa noite Igor, Obrigado por responder.

    Eu queria poder utilizar um microfone público e outros privados. 

    Sendo que o reconhecimentos destes privados limitaria comandos de voz. 

    Minha ídeia era pegar a lista de microfones dentro de um for e repetir esse método abaixo pra cada microfone. 

    Modificar ele pra passar o Stream toda vez que encontar um microfone ativo dentro do laço for

    LoadSpeechRecognition(stream);

    private void LoadSpeechRecognition()
            {
                GrammarBuilder gb = new GrammarBuilder();
    
                SQLiteConnection conn = new SQLiteConnection("Data Source=Data.sdb");
                conn.Open();
                string sql = "SELECT primeirafrase,segundafrase FROM comandos";
                SQLiteCommand cm = new SQLiteCommand(sql, conn);
                SQLiteDataReader dr = cm.ExecuteReader();
    
                Choices cn = new Choices();
                while (dr.Read())
                {
                    cn.Add(dr.GetString(0));
                    cn.Add(dr.GetString(1));
                }
                conn.Close();
                cn.Add("Tau");
                cn.Add("silêncio");
                gb.Append(cn);
    
                Grammar g = new Grammar(gb);
    
                sre.SetInputToDefaultAudioDevice();
                sre.BabbleTimeout = TimeSpan.FromMilliseconds(100);
                sre.LoadGrammar(g);
                sre.RecognizeAsync(RecognizeMode.Multiple);
                sre.SpeechRecognized += new EventHandler<SpeechRecognizedEventArgs>(RecognitionEvent);
            }

    quinta-feira, 8 de agosto de 2019 22:41