audio aufnehmen mit python?

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Benutzeravatar
roschi
User
Beiträge: 225
Registriert: Samstag 29. März 2008, 18:58
Wohnort: Thueringen, Deutschland
Kontaktdaten:

hallo!

ich suche nach einer moeglichkeit, mit python audio aufzunehmen (via mikrofon). ich habe auch schon gegoogelt und im forum gesucht, und leider nichts zu diesem thema gefunden. gibt es eventuell schon fertige module fuer so etwas, oder geht das gar nicht?

vielen dank schonmal im vorraus!

mfg
roschi
[size=117]Fuer Alle, die in Python einsteigen wollen, kann ich das Buch [url=http://abop-german.berlios.de/]A Byte of Python[/url] nur waermstens empfehlen![/size]
Benutzeravatar
roschi
User
Beiträge: 225
Registriert: Samstag 29. März 2008, 18:58
Wohnort: Thueringen, Deutschland
Kontaktdaten:

uha! danke fuer den tipp

das programm ist ja riesig! ich weiß ueberhaupt nicht, was ich damit anfangen soll. sorry, aber da steig ich wirklich nicht durch.

ich hab mir die snacklib geladen, und scheitere schon am installieren.

gibt es nicht irgendwas kleineres und einfacheres, das auch ohne 'tkinter' laeuft?

mfg
roschi
[size=117]Fuer Alle, die in Python einsteigen wollen, kann ich das Buch [url=http://abop-german.berlios.de/]A Byte of Python[/url] nur waermstens empfehlen![/size]
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

roschi hat geschrieben:mit python audio aufzunehmen
Hallo roschi!

Für Windows: http://www.johnnypops.demon.co.uk/python/recordwin32.py

Sonstige Fundsachen:
- http://www.freenet.org.nz/python/pyPortAudio/
- http://pypi.python.org/pypi?%3Aaction=s ... mit=search
- http://www.portaudio.com/

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Benutzeravatar
roschi
User
Beiträge: 225
Registriert: Samstag 29. März 2008, 18:58
Wohnort: Thueringen, Deutschland
Kontaktdaten:

ah, das sieht ja schon ein BISSCHEN kleiner aus :) vielen dank!

koenntest du vielleicht trotzdem etwas beispielcode posten?:
- wie nehme ich damit auf, und bekomme die aufgenommenden daten in einen string?
- kann ich mit diesem script auch den sound wiedergeben? wenn ja: wie?

danke!

okay, ich hoffe, dass ich mir da nicht zu viel vorgenommen habe :)

mfg
roschi
[size=117]Fuer Alle, die in Python einsteigen wollen, kann ich das Buch [url=http://abop-german.berlios.de/]A Byte of Python[/url] nur waermstens empfehlen![/size]
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Hallo roschi!
roschi hat geschrieben:koenntest du vielleicht trotzdem etwas beispielcode posten?
Sieh dir den Code an, besonders die ``def _main()``.
roschi hat geschrieben:wie nehme ich damit auf
Sieh dir den Code an, besonders die ``def _main()``.
roschi hat geschrieben:bekomme die aufgenommenden daten in einen string?
Indem du die Datei nach der Aufnahme mit ``file`` oder ``open`` (im Binärmodus) öffnest. Nicht fragen -- zuerst Hilfe lesen: http://docs.python.org/lib/built-in-funcs.html#l2h-54
roschi hat geschrieben:kann ich mit diesem script auch den sound wiedergeben?
Nein.

So gehts: http://groups.google.com/group/de.comp. ... e5466f26d0

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Benutzeravatar
roschi
User
Beiträge: 225
Registriert: Samstag 29. März 2008, 18:58
Wohnort: Thueringen, Deutschland
Kontaktdaten:

hallo!

ja, inzwischen habe ich mir das ganze ding mal durchgelesen, und ein wenig optimiert :)

trotzdem:
kann man das nicht auch so regeln, das die aufgenommenen daten DIREKT in einen string geschrieben werden? das mit der datei scheint mir irgendwie etwas zu unschoen, und kostet bestimmt auch zeit... aber im notfall werde ich es wohl so machen.

wegen dem abspielen:
soll ich da die daten auch erst wieder in eine datei schreiben?
am liebsten haette ich etwas, dem man die audiodateien inform von strings geben kann. ich wollt mir mal 'winsound' anschauen, merkte aber, dass das nur als bytecode vorliegt. ich haette es vielleicht etwas umgeschrieben.

mfg
roschi
[size=117]Fuer Alle, die in Python einsteigen wollen, kann ich das Buch [url=http://abop-german.berlios.de/]A Byte of Python[/url] nur waermstens empfehlen![/size]
Benutzeravatar
roschi
User
Beiträge: 225
Registriert: Samstag 29. März 2008, 18:58
Wohnort: Thueringen, Deutschland
Kontaktdaten:

hallo!

ich moechte dieses thema nochmal aufgreifen - und zwar habe ich herausgefunden, dass 'winsound' folgendermaßen angewandt auch strings mit wave-daten wiedergibt:

Code: Alles auswählen

winsound.PlaySound(my_wave_String, winsound.SND_MEMORY)
was kann ich aber bei file-objects machen?
ich moechte, das ein file-object mit wave-daten so lange gespielt wird, bis keine daten mehr kommen. dann soll es aber auf neue daten warten, und sobald wieder welche im file-object (es handelt sich um ein 'socket._fileobject()'-object) stehen, sollen sie abgespielt werden.

kennt jemand so etwas?
ich wuerde ja 'pyglet.media.load(...)' verwenden, aber es kann noch nicht mit file-objects arbeiten - nur mit filenames. file-objects stehen noch in der todo-liste.

lg
roschi
[size=117]Fuer Alle, die in Python einsteigen wollen, kann ich das Buch [url=http://abop-german.berlios.de/]A Byte of Python[/url] nur waermstens empfehlen![/size]
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Code: Alles auswählen

with open(soundfile) as filehandle:
    for my_wave_String in filehandle:
        winsound.PlaySound(my_wave_String, winsound.SND_MEMORY)
Oder hab ich da jetzt dein Problem missverstanden? Das löst soweit ich weiss, allerdings nicht deine Anforderung, dass er auf neue Daten warten soll.
BlackJack

Das ist mit WAV-Dateien auch ein wenig unsauber, weil in deren Header steht wieviele Samples in der Datei vorhanden sind. Man müsste also schon vorher wissen wieviele Daten gesendet bzw. empfangen werden.
Benutzeravatar
roschi
User
Beiträge: 225
Registriert: Samstag 29. März 2008, 18:58
Wohnort: Thueringen, Deutschland
Kontaktdaten:

hallo!

@cofi:
ja, du hast mein problem missverstanden. :-)
ich moechte auf einem rechner sound aufnehmen. das mache ich im moment mit 'recordwin32.py' (weiter oben im thread genannt). nun habe ich aber recordwin32.py und das wave-modul umgeschrieben, so dass recordwin32 sich ein wave-object uebergeben laesse, und 'wave' sich file-objects. das klappt auch - recordwin32 sendet die aufgenommenen daten ueber einen socket. auf der anderen seite sollen diese daten abgespielt werden. ich weis allerdings nicht, wie lang der stream wird. das ist vom user abhaengig. jedenfals soll der empfaenger immer spielen, wenn neue daten ankommen. ich moechte auch nicht immer im sekundentakt neue wave-files senden. das ist etwas zu unsauber und knackt zwischendurch. wie kann ich mein problem eurer meinung nach loesen? wenn jemand schon einen vorschlag hat, waere etwas code ganz nett.

so, vielen dank schonmal im vorraus!

lg
roschi

PS: wenn das mit wave-daten zu unsauber ist, dann wuerde ich natuerlich auch ein anderes format nehmen - aber wie aufnehmen?
[size=117]Fuer Alle, die in Python einsteigen wollen, kann ich das Buch [url=http://abop-german.berlios.de/]A Byte of Python[/url] nur waermstens empfehlen![/size]
Nko
User
Beiträge: 13
Registriert: Sonntag 19. Oktober 2008, 18:02

Hallo zusammen,

Es scheint zwar, daß Du (Roschi) ein propietäres OS benutzt, aber Dein Statement unter dem Post suggeriert zumindest teilweise ne Linuxbenutzung. Deshalb wollte ich auf folgendes hinweisen:

JACK (JACK audio connection kit http://jackaudio.org/) ist ein Audio Interface mit geringer Latenzzeit. Und dafür gibt es dann PyJack (http://py-jack.sourceforge.net/), ein Wrapper für Python. Einfach zu bedienen und die Audiodaten sind Numeric-Arrays, also wunderbar zu manipulieren.

Gruß, Nko

PS: wie man aus den Daten ein WAV-File macht, kann ich jetzt auf die Schnelle nicht sagen...
Benutzeravatar
roschi
User
Beiträge: 225
Registriert: Samstag 29. März 2008, 18:58
Wohnort: Thueringen, Deutschland
Kontaktdaten:

Nko hat geschrieben:Hallo zusammen,

Es scheint zwar, daß Du (Roschi) ein propietäres OS benutzt, aber Dein Statement unter dem Post suggeriert zumindest teilweise ne Linuxbenutzung. Deshalb wollte ich auf folgendes hinweisen:

JACK (JACK audio connection kit http://jackaudio.org/) ist ein Audio Interface mit geringer Latenzzeit. Und dafür gibt es dann PyJack (http://py-jack.sourceforge.net/), ein Wrapper für Python. Einfach zu bedienen und die Audiodaten sind Numeric-Arrays, also wunderbar zu manipulieren.

Gruß, Nko

PS: wie man aus den Daten ein WAV-File macht, kann ich jetzt auf die Schnelle nicht sagen...
super - vielen dank!
das werde ich mir anschauen, wenn ich das ganze unter windows zum laufen bekommen habe. ich benutze windows, weil es verlangt wird und zum testen von programmen, und linux (meist debian) weil es spaß macht und oft auch komfortabler ist. :)

ich moechte doch aus den daten kein wave-file machen. ich habe ein file-object, aus dem ich abspielen moechte.

lg
roschi
[size=117]Fuer Alle, die in Python einsteigen wollen, kann ich das Buch [url=http://abop-german.berlios.de/]A Byte of Python[/url] nur waermstens empfehlen![/size]
Antworten