Hallo!
Wie kann ich mit Python (und Windows) Sound von einem Mikrofon aufnehmen?
Sound aufnehmen?
Damit funktioniert es hoffentlich auch bei mir....
http://twistedmatrix.com/pipermail/twis ... 09136.html
und
http://pymedia.org/tut/index.html
EDIT: Download von pymedia für Python 2.5 hier ....
http://indashpc.org/vbullettin/viewtopic.php?t=778
http://twistedmatrix.com/pipermail/twis ... 09136.html
und
http://pymedia.org/tut/index.html
EDIT: Download von pymedia für Python 2.5 hier ....
http://indashpc.org/vbullettin/viewtopic.php?t=778
Zuletzt geändert von Janux am Donnerstag 25. September 2008, 10:29, insgesamt 1-mal geändert.
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hallo Janux!Janux hat geschrieben:Wie kann ich mit Python (und Windows) Sound von einem Mikrofon aufnehmen?
http://www.python-forum.de/topic-15035.html
mfg
Gerold
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
sorry, habs mit google nicht gefundengerold hat geschrieben:Hallo Janux!Janux hat geschrieben:Wie kann ich mit Python (und Windows) Sound von einem Mikrofon aufnehmen?
http://www.python-forum.de/topic-15035.html
mfg
Gerold
-
- User
- Beiträge: 408
- Registriert: Freitag 7. Oktober 2005, 14:37
- Wohnort: Berlin
- Kontaktdaten:
Hi Janux,
ich mache das mit Snack.
http://www.speech.kth.se/snack/
Hat viele nützliche Funktionen:
http://www.speech.kth.se/snack/man/snac ... n-man.html
Gruß,
Seven
ich mache das mit Snack.
http://www.speech.kth.se/snack/
Hat viele nützliche Funktionen:
http://www.speech.kth.se/snack/man/snac ... n-man.html
Gruß,
Seven
Danke für den Tipp!snakeseven hat geschrieben:Hi Janux,
ich mache das mit Snack.
http://www.speech.kth.se/snack/
Hat viele nützliche Funktionen:
http://www.speech.kth.se/snack/man/snac ... n-man.html
Gruß,
Seven
mfg ... Janux
Kannst du mir bitte sagen, wie ich bei Sounds vorne und hinten dassnakeseven hat geschrieben:Hi Janux,
ich mache das mit Snack.
http://www.speech.kth.se/snack/
Hat viele nützliche Funktionen:
http://www.speech.kth.se/snack/man/snac ... n-man.html
Gruß,
Seven
Lautlose abschneiden kann? (wie 'strip()' bei Strings..)
mfg ... Janux
-
- User
- Beiträge: 408
- Registriert: Freitag 7. Oktober 2005, 14:37
- Wohnort: Berlin
- Kontaktdaten:
Hi Janux,
die Funktion heißt bei Snack
Autotrimmen kann crop aber nicht. Das kann dafür Sox:
http://sox.sourceforge.net/
Autotrimmen mit Sox:
FILTERVALUE: Hier kann man einen Hochpassfilterwert (HZ) eingeben (tiefe Frequenzen werden gefiltert)
THRESHOLD-START / THRESHOLD-END (ms): Es wird vor dem Abschneiden vor und hinter dem Nutzsignal eine Blende gesetzt
Alle Parameter sind durch ein Leerzeichen voneinander getrennt.
Gruß, Seven
die Funktion heißt bei Snack
Code: Alles auswählen
Sound.crop(start,end)
http://sox.sourceforge.net/
Autotrimmen mit Sox:
Code: Alles auswählen
args = ''.join(('C:/Ablage/sox12181/sox -q ', QUELLDATEI.WAV ZIELDATEI.WAV ', 'highpass ',FILTERVALUE,' silence 1 0 ',THRESHOLD-START,' d fade l 200s reverse silence 1 0 ',THRESHOLD-END,' d fade t 2000s reverse'))
proz = subprocess.Popen(args,shell=True); proz.wait()
THRESHOLD-START / THRESHOLD-END (ms): Es wird vor dem Abschneiden vor und hinter dem Nutzsignal eine Blende gesetzt
Alle Parameter sind durch ein Leerzeichen voneinander getrennt.
Gruß, Seven
@snakeseven: Man sollte `subprocess.Popen()` eine Liste mit Argumenten übergeben und nicht die Argumente händisch zusammenbasteln und auf das ``shell=True`` sollte auch verzichtet werden.
"Der Dumme erwartet viel. Der Denkende sagt wenig." ("Herr Keuner" -- Bertolt Brecht)
-
- User
- Beiträge: 408
- Registriert: Freitag 7. Oktober 2005, 14:37
- Wohnort: Berlin
- Kontaktdaten:
Hi Trundle,
ja das mit der Liste ist auf jeden Fall besser. Ist halt ein älterer Code von mir, wo ichs noch nicht besser wußte Schaden richtet es so aber nicht an.
Gruß, Seven
ja das mit der Liste ist auf jeden Fall besser. Ist halt ein älterer Code von mir, wo ichs noch nicht besser wußte Schaden richtet es so aber nicht an.
Gruß, Seven
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
So gesehen eigentlich schon, da er 1) unsicher 2) komplizierter als nötig ist. Also bei einem Review würde das nicht durchkommen und jemandem das als Tipp geben sollte man eigentlich auch nicht. Nichts gegen dich, aber so sollte man es einfach nicht machen. Das wird sonst genauso problematisch wie Stern-Importe.snakeseven hat geschrieben:Schaden richtet es so aber nicht an.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Wenn "shell=True" falsch eingesetzt wird, richtet es mitunter riesigen Schaden an. Ich denke da an einen Webserver, der Nutzereingaben an ein Subprozess weitergibt ... wenn da nicht penibel maskiert wird, kann ein Angreifer mitunter beliebige Prozesse auf dem Webserver starten.snakeseven hat geschrieben:Schaden richtet es so aber nicht an.
-
- User
- Beiträge: 408
- Registriert: Freitag 7. Oktober 2005, 14:37
- Wohnort: Berlin
- Kontaktdaten:
Ja, bei solch heiklen Angelegenheiten wie einem Webserver kann man nicht vorsichtig genug sein. Aber die Variante ohne Liste in einem kleinen Standalone Script tut eher weniger weh. Ich habe diese Variante jedenfalls über Jahre so eingesetzt, weil ich es nicht besser wußte und es gab keine Probleme.
Dennoch sehe ich ein, dass genaues Hinschauen in einem Forum wie diesem sehr sinnvoll ist, denn viele hier sind Anfänger, oder noch nicht so weit fortgeschritten. Und auslernen tut man schließlich nie.
Die Frage die ich mir stelle ist nur, soll man darauf verzichten jemandem zu helfen, nur weil man ein suboptimales Codebeispiel hat ?
Grüße, Seven
Dennoch sehe ich ein, dass genaues Hinschauen in einem Forum wie diesem sehr sinnvoll ist, denn viele hier sind Anfänger, oder noch nicht so weit fortgeschritten. Und auslernen tut man schließlich nie.
Die Frage die ich mir stelle ist nur, soll man darauf verzichten jemandem zu helfen, nur weil man ein suboptimales Codebeispiel hat ?
Grüße, Seven
Es kann auch bei kleinen Standalone-Scripten kann es Probleme geben, z.B. mit Eingaben, die Sonderzeichen der Shell enthalten. Das ist zwar nicht unbedingt ein Sicherheitsproblem, aber das Skript funktioniert halt nicht.snakeseven hat geschrieben:Ja, bei solch heiklen Angelegenheiten wie einem Webserver kann man nicht vorsichtig genug sein. Aber die Variante ohne Liste in einem kleinen Standalone Script tut eher weniger weh. Ich habe diese Variante jedenfalls über Jahre so eingesetzt, weil ich es nicht besser wußte und es gab keine Probleme.
Nö, wenn es nicht optimal ist, kommt sicher jemand, und korrigiert istDie Frage die ich mir stelle ist nur, soll man darauf verzichten jemandem zu helfen, nur weil man ein suboptimales Codebeispiel hat ?
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Was ja hiermit geschehen ist (und statt dem "ist" gehört da ein "es" hin und damit sind wir für die "Weißheit" von letztens quitt - SCNR).lunar hat geschrieben:Nö, wenn es nicht optimal ist, kommt sicher jemand, und korrigiert ist
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
-
- User
- Beiträge: 408
- Registriert: Freitag 7. Oktober 2005, 14:37
- Wohnort: Berlin
- Kontaktdaten:
Ikke nochmal,
Wenn ich die Parameter als Liste übergebe, findet Sox die angegebene Datei nicht:
übergebe ich das Ganze als String, ist alles OK.
('shell=True' verhindert unter Windows, dass ein zusätzliches DOS-Fenster geöffnet wird)
Frage:
In welcher Form übergebe ich die Parameter innerhalb der Liste ?
Denn wenn ich dennoch weiterhin auf die Leerzeichen zwischen den Parametern achten muß, sehe ich den Vorteil gegenüber einem String nicht mehr !?
Gruß,
Seven
Code: Alles auswählen
args = ['C:/Ablage/sox12181/sox -q', 'C:/Temp/Test.wav', '-e stat -v']
Code: Alles auswählen
proz = subprocess.Popen(args)
File "C:\Programme\Python25\lib\subprocess.py", line 593, in __init__
errread, errwrite)
File "C:\Programme\Python25\lib\subprocess.py", line 815, in _execute_child
startupinfo)
WindowsError: [Error 2] Das System kann die angegebene Datei nicht finden
übergebe ich das Ganze als String, ist alles OK.
Code: Alles auswählen
args = ''.join(('C:/Ablage/sox12181/sox -q ', 'C:/Temp/Test.wav', ' -e stat -v'))
Frage:
In welcher Form übergebe ich die Parameter innerhalb der Liste ?
Denn wenn ich dennoch weiterhin auf die Leerzeichen zwischen den Parametern achten muß, sehe ich den Vorteil gegenüber einem String nicht mehr !?
Gruß,
Seven
In Deinem Beispiel wird das Programm 'C:/Ablage/sox12181/sox -q' zum Ausführen nicht gefunden. Das Programm gibt's ja auch nicht, es heisst nur 'C:/Ablage/sox12181/sox' und '-q' ist ein Argument. Du musst in der Liste alle Argumente *einzeln* aufführen, also im Grunde das Angeben, was das Programm als `sys.argv` bekommt.
Code: Alles auswählen
args = ['C:/Ablage/sox12181/sox', '-q', 'C:/Temp/Test.wav', '-e', 'stat', '-v']
-
- User
- Beiträge: 408
- Registriert: Freitag 7. Oktober 2005, 14:37
- Wohnort: Berlin
- Kontaktdaten:
Und das funktioniert auch. Das gibt der Listenoption (mindestens) einen klaren Vorteil!
Gruß, Seven
Gruß, Seven