Domanda

che stavo cercando di implementare il rilevamento tono di voce in iPhone utilizzando il metodo HPS. Ma i toni rilevati non sono molto precisi. Performous fa un lavoro decente di rilevamento campo.

Ho guardato attraverso il codice, ma non ho pienamente ottenere la teoria che sta dietro i calcoli. Usano FFT e trovano le cime. Ma la parte in cui usano la fase dell'uscita FFT, mi ha confused.I figura usano alcune euristiche per le frequenze vocali.

Quindi, Qualcuno potrebbe spiegare l'algoritmo utilizzato in Performous per rilevare passo?

È stato utile?

Soluzione

[Performous] [1] estratti passo dal microfono. Anche il codice è open source. Ecco una descrizione di ciò che l'algoritmo fa, dal ragazzo che si codificato (Tronic su irc.freenode.net # Performous).

  • ingresso PCM (con buffer)
  • FFT (1024 campioni per volta, rimuovere 200 campioni dal davanti del buffer di seguito)
  • metodo di riassegnazione (contro la FFT precedente, che era di 200 campioni in precedenza)
  • Filtraggio dei picchi (questa parte potrebbe essere fatto molto meglio o addirittura lasciato fuori)
  • La combinazione di picchi in gruppi di armoniche (che noi chiamiamo la combinazione di un tono)
  • temporale filtraggio dei toni (aggiornare la serie di toni rilevato anteriore invece di utilizzare quelli appena rilevati)
  • Scegli il miglior suono vocale (limiti di frequenza, ponderazione, potrebbe utilizzare la matrice armonica anche, ma non credo che facciamo)

Io ancora non è stato in grado da queste informazioni per capirlo e attuarlo. Se qualcuno riesce questo, per favore si prega di inviare i risultati qui, e commentare questa risposta, in modo che notifica così mi.

Il compito sarebbe quello di creare un minimo di involucro C ++ intorno a questo codice.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top