- fchao-Sinus-Wechselrichter AliExpress         
Seite 7 von 25 ErsteErste ... 5678917 ... LetzteLetzte
Ergebnis 61 bis 70 von 241

Thema: wav Dateien: Programieren von Wiedergabe und Aufnahme

  1. #61
    HaWe
    Gast
    Anzeige

    E-Bike
    vielleicht kann wer anderes helfen?
    Ich weiß auch nicht mehr als dieses hier:

    https://de.wikipedia.org/wiki/RIFF_W...0.9C-Abschnitt

  2. #62
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    19.01.2016
    Ort
    Saarbrücken
    Beiträge
    397
    Das kenne ich doch irgendwo her .

    Ich werde nachher mal ein bisschen mit der Eingabe rum spielen. Lernen beim tuen oder wie das heisst ^^

    - - - Aktualisiert - - -

    Ich habe die Werte mal in einer CSV gespeichert und in LibreOffice geplottet. Sieht in der Tat so aus wie ich es erhofft hatte. Der grosse Ausschlag ist ein von mir gesprochenes Hallo und ich nehme an, diese dicke Linie davor und danach stellt das Rauschen dar. Ich denke das kann man raus filtern und das Wort ist ja auch sehr gut zu erkennen finde ich.
    Miniaturansichten angehängter Grafiken Miniaturansichten angehängter Grafiken soundtest.png  

  3. #63
    HaWe
    Gast
    die FFT wird dir die Frequenzen sehr genau zeigen, die das Rauschen verursachen.
    Dazu müsstest du den FFT-Plot von reinem Rauschen betrachten und dann den Plot, der in deinem Wort vorkommt.
    Die Spikes, die in beiden in identischer Weise vorkommen, sind unspezifisch, tragen keine Information.
    Ob man sie einfach isoliert aus dem FFT-Array herauslöschen kann, wäre ein Versuch wert: erzeugt man dann die FFT-Rücktransformation, müsste man nämlich ein bereinigtes Wave Signal hören können.

    das funktioniert natürlich nur bei identischen, reproduzierbaren Rauschquellen/-Arten und ist daher kein allgemeiner Lösungsweg.
    Aber immerhin kannst du die Rausch-Frequenz-Daten als Basis für statistische Rauschfilter verwenden wie ich sie oben genannt habe.

  4. #64
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    19.01.2016
    Ort
    Saarbrücken
    Beiträge
    397
    Ich bin mir nur noch nicht ganz sicher, ob deine Idee den Input erst zu speichern eine gute Idee ist. Das Verzögert die Geschichte schon ganz Ordentlich!

    Ich versuche als Nächstes mal, was passiert wenn ich nur Daten über 138 und unter 118 an die Ausgabe gebe. Das sollte auf jeden Fall die Geschichte auf das Wesentliche verkürzen.

    Ein Gedanke der mir auch kam, letzten Endes muss sich das ja nicht mehr so anhören wie es original war. Solang es sich immer auf die selbe Art verändert sollte es ja egal sein. Hauptsache der Bot weiss was er damit anzufangen hat.

    Nächste Frage, wie sehr ähneln sich stimmen? Wenn ich ein Wort spreche und er es erkennt. Würde er es auch bei dir erkennen?

  5. #65
    HaWe
    Gast
    nein, Speichern muss nicht sein, es dient nur zum Debuggen / zur Verlaufskontrolle.
    Später machst du den Vergleich "on the fly".
    Aber das Anhören zwischendurch in der Entwicklungsphase ist schon wichtig, damit man weiss, was man verändert hat, ob es besser oder schlechter ist, und wo man jetzt steht.

    "hallo Google" beweist, dass es in weiten Bereichen möglich ist, Spracherkennung auch Sprecher-unabhängig zu programmieren.
    Die FT/FFT analysiert Schwingungen und Schwebungen als Summe mehrerer Grundfrequenzen (sinus/cosinus als Komplexe Funktionen), und wenn du die richtigen (niederfrequenten Sprach-/Wort/Laut-Grundfrequenzen analysierst und nicht die Stimm-Oberwellen, dann bist du sicher schon recht nah dran. Das klappte ja sogar mit dem Lego Lautstärkesensor

    Bei unserer "Spracherkennung" (zumindest wie ich es mir vorstelle) wird ja auch gar nicht ein Wort "richtig erkannt" (Laut für Laut, Pause für Pause), sondern es wir das am besten passendste unter (relativ wenigen) Mustern in der Datenbank gesucht. wenn also Sprecher A "ja " sagt und Sprecher "B" auch, dann wird aller Wahrscheinlicheit nach der Raspi nicht bei B ein "rückwärts" beim Mustervergleich herauslesen.
    Aber es gibt nichts, was es nicht gibt, shit happens, siehe Telekom Sprachmenü ("...dann sagen Sie jetzt bitte 'ja'.... :-/ )

  6. #66
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    19.01.2016
    Ort
    Saarbrücken
    Beiträge
    397
    Na ja, ich habe schon vor das der Bot möglichst viel versteht, vielleicht sogar lernt (das wird aber die Zukunft zeigen, das mache ich davon abhängig wie gut es funktioniert). Also lernen nicht wie ein Mensch sondern eher banal. Wenn er ein Wort nicht erkennt das man es dann rein speichern kann.

    Aber erst einmal schauen wie ich das eingehende Signal verbessern kann. Theoretisch stört es nicht so viel das Rauschen. Also das Hallo kann man schon absolut gut erkennen. Aber irgendwie muss ich ihm ja bei bringen was ein Wort und was eine Pause ist. Ich denke, wenn das soweit klappt können wir uns dran machen das in ein Format zu bringen das FT versteht.

  7. #67
    HaWe
    Gast
    Aber irgendwie muss ich ihm ja bei bringen was ein Wort und was eine Pause ist.
    bring ihm erstmal einzelne Wörter oder fixe Wortgruppen bei, und die dann sicher zu erkennen.
    Auch das Lernen neuer Muster kommt erst im 2. Schritt und ist nur eine Frage des bedien-Interfaces.

    Alles andere ist für den Anfang zu kompliziert.

  8. #68
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    19.01.2016
    Ort
    Saarbrücken
    Beiträge
    397
    Nichts desto weniger sollte er erkennen was ein Wort ist und was eine Pause. Denn wie man an meinem Beispiel ja gesehen hat da ist lange vor und hinten dran nichts. Er sollte schon erkennen was relevant ist und was nicht.

  9. #69
    HaWe
    Gast
    glaub mir, das ist erstmal irrelevant. Ich habe lange genug Zeit mit Mustererkennung, statistischen und stochastischen Filtern und lernfähigen Neuronalen Netzen gearbeitet, um zu wissen, was jetzt vorrangig ist.
    Erst muss er ein Muster im ganzen erkennen können.
    Ob du in einem Muster dann später eine Pausenerkennung vorschaltest und dann in Unter-Muster aufteilst, ist für das grundsätzliche Problem ohne Belang.

    Ich will auch gerne weiter dranbleiben mit FFT und cross-correlation, aber dazu ist GANZ ENORM WICHTIG für die Filter zur Signal-Verarbeitung:
    Bitte keine Vectoren von variabler Größe, sondern ausschließlich arrays mit fixer Größe.
    Was nicht reinpasst vom Sound, muss abgeschnitten werden, und was übrig bleibt, mit Nullen aufgefüllt.
    Das gilt sowohl für alle char-arrays als auch für alle int- und float (besser: double) arrays, und bitte alle in expliziten C11-Datentypen, nicht char, nicht int, sondern uint8_t und int32_t (ist besser als int16_t).

    Wenn man das nicht macht, funktioniert das nicht mit Filtern und Transformationen, so wie ich es vorhabe und auch schon z.T. gemacht habe - wenn du die Vektoren behältst, muss ich leider aussteigen.

    Die Dimensionen habe ich dir ja bereits hier genannt:

    Code:
    int32_t wavarray[SHRT_MAX];
    int32_t input[SHRT_MAX];
    
    uint8_t wave[SHRT_MAX];
    
    double fx_[USHRT_MAX],  // FFT reell-Teil
           fy_[USHRT_MAX];  // FFT imaginär-Teil
    es muss genau so und nicht anders sein, damit man die FFT-Dimensionen und die wav-Dimensionen zueinander passen und die FFT keinen Unsinn transformiert.

    ps,
    er muss den Start eines Signals (Worts) erkennen, und das geht über ein Lautstärke-Bias:
    er fängt erst an, aufzunehmen bzw. das wav zu schreiben, wenn die Lautstärke über einer bestimmten Grenze ist.
    Das Signal wird dann über einen Threshold "geschnitten" (cut vorher, cut nachher).


    Wie sieht denn jetzt ein wav File aus?
    Kannst du die reinen wav Schwingungs-Daten daraus isolieren und in den wavarray packen?
    Geändert von HaWe (03.06.2016 um 15:05 Uhr) Grund: double, nicht float

  10. #70
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    19.01.2016
    Ort
    Saarbrücken
    Beiträge
    397
    Dann nenn mir mal ein sinnvolles SHRT_MAX. Der Rest sollte ja nicht so schwer sein.

    Ich nehme an

    Code:
    int32_t input[SHRT_MAX];
    ist das was das Mikro aufgenommen hat?

    - - - Aktualisiert - - -

    Habe ich noch nicht versucht, sollte aber funktionieren, denn die Daten die ich abspiele sind letzten Endes die Gleichen wie die die ich vom Mikro aus abspiele.

    Genau genommen ist ja der Unterschied zwischen playWave und playCaptured nur der, dass man anstatt einer Datei die puren Daten übergibt und die Werte für Bit, Frequenz usw. vor gibt, während bei playWave die Daten aus den Headern gelesen werden und dann aber die selben Daten an die Ausgabefunktion übergeben werden. Also das kann ich machen, das sollte kein Problem sein.

Seite 7 von 25 ErsteErste ... 5678917 ... LetzteLetzte

Ähnliche Themen

  1. Video Aufnahme (+12std.)
    Von highdef im Forum Suche bestimmtes Bauteil bzw. Empfehlung
    Antworten: 8
    Letzter Beitrag: 03.06.2011, 11:08
  2. led ein/aus programieren
    Von anthony im Forum PIC Controller
    Antworten: 6
    Letzter Beitrag: 15.07.2008, 18:44
  3. hex-dateien in bin-dateien umwandeln
    Von roboterheld im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 3
    Letzter Beitrag: 02.10.2007, 21:25
  4. Richtiges Drehen einer Flasche/Dose zur Aufnahme
    Von ähM_Key im Forum Mechanik
    Antworten: 2
    Letzter Beitrag: 06.10.2006, 16:43
  5. Automatische Audio-Aufnahme
    Von the_Ghost666 im Forum Software, Algorithmen und KI
    Antworten: 6
    Letzter Beitrag: 11.09.2005, 21:27

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Labornetzteil AliExpress