PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [C#] Soundausgabe eines Spiels unter Windows aufnehmen


Djon
2011-04-26, 18:18:11
Hallo!

Ich möchte ein Programm schreiben, welches die Soundausgabe eines Spiels unter Windows mitschneidet und auf das Vorkommen bestimmter Sprachsequenzen reagiert. Die Sprachsequenzen sind immer die gleichen, d.h. es kommt nur eine Computerstimme vor, die vielleicht 5-6 verschiedene Wörter spricht. Ich habe gesehen, dass unter Windows 7 es separate Soundkanäle für jede Soundquelle gibt (Firefox, Chrome, Spiel, usw.). Es wäre sinnvoll, dass man nur die Soundausgabe des Spiels analysiert.
Wie könnte man es in C# umsetzen?

Vielen Dank im Voraus!

Gruß Djon

instinct
2011-04-26, 18:43:21
Kennst du die lib, die für die Soundausgabe zuständig ist?
Wenn ja, könntest du die entsprechende Funktion per DLL injection und dir die Sounddaten holen. Wird z.B. SDL verwendet, müsstest du die Funktion SDL_OpenAudio unterbrechen.

Monger
2011-04-26, 18:54:12
Es gibt in WPF u.a. ne API für die Spracherkennung. Müsste man also "nur" noch den Soundausgang von Programm X auf den Mikrofoneingang leiten.

Djon
2011-04-26, 18:54:55
Hallo!

Ich kann jetzt leider zu der lib nichts sagen. Bei dem Spiel handelt es sich um "World of Tanks". Laut der Homepage setzt das Spiel auf "Bigworld".

Gruß Djon

Monger
2011-04-26, 19:00:40
Hier mal ein Tutorial zur Spracherkennung:
http://www.redmondpie.com/speech-recognition-in-a-c-wpf-application/

Der zentrale Pferdefuß wird sein, auf den Soundkanal eines völlig fremden Programms zuzugreifen.

Gast
2011-04-27, 10:28:43
Spracherkennung wird wohl gar nicht erforderlich sein. Es müssen doch nur wenige Sample-Fetzen voneinander unterschieden werden, dafür ist keine aufwendige Mustererkennungssoftware erforderlich.

Ich würde mal versuchen, von den zu erkennenden Samples (den Binärdaten) CRCs zu berechnen. Wenn dann die Differenz zwischen der "Vorlage" und dem zu erkennenden Fetzen hinreichend klein ist, hast Du ein Sample erkannt.

Das Hauptproblem wird wohl, wie schon genannt, die Kanaltrennung sein: Wenn im Hintergrund Musik oder so läuft, wird's schnell unpräzise.

Djon
2011-04-27, 17:09:30
Hallo!

Ja, im Hintergrund kann sowohl die Musik, aber auch andere Geräuchquellen aktiv sein. Mit der Crc-Berechnung kommt man da wohl nicht sehr weit :redface:

Gruß Djon