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.
Benutzeravatar
roschi
User
Beiträge: 225
Registriert: Samstag 29. März 2008, 18:58
Wohnort: Thueringen, Deutschland
Kontaktdaten:

audio aufnehmen mit python?

Beitragvon roschi » Samstag 14. Juni 2008, 20:08

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
Fuer Alle, die in Python einsteigen wollen, kann ich das Buch A Byte of Python nur waermstens empfehlen!
abgdf

Beitragvon abgdf » Samstag 14. Juni 2008, 20:37

Hi,

schau Dir doch das hier mal an:

http://www.python-forum.de/topic-8111.html

Viele Grüße
Benutzeravatar
roschi
User
Beiträge: 225
Registriert: Samstag 29. März 2008, 18:58
Wohnort: Thueringen, Deutschland
Kontaktdaten:

Beitragvon roschi » Samstag 14. Juni 2008, 21:41

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
Fuer Alle, die in Python einsteigen wollen, kann ich das Buch A Byte of Python nur waermstens empfehlen!
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5554
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Telfs (Tirol)
Kontaktdaten:

Re: audio aufnehmen mit python?

Beitragvon gerold » Samstag 14. Juni 2008, 22:05

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:

Beitragvon roschi » Samstag 14. Juni 2008, 22:23

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
Fuer Alle, die in Python einsteigen wollen, kann ich das Buch A Byte of Python nur waermstens empfehlen!
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5554
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Telfs (Tirol)
Kontaktdaten:

Beitragvon gerold » Samstag 14. Juni 2008, 23:41

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:

Beitragvon roschi » Sonntag 15. Juni 2008, 07:30

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
Fuer Alle, die in Python einsteigen wollen, kann ich das Buch A Byte of Python nur waermstens empfehlen!
Benutzeravatar
roschi
User
Beiträge: 225
Registriert: Samstag 29. März 2008, 18:58
Wohnort: Thueringen, Deutschland
Kontaktdaten:

Beitragvon roschi » Dienstag 18. November 2008, 14:29

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
Fuer Alle, die in Python einsteigen wollen, kann ich das Buch A Byte of Python nur waermstens empfehlen!
Benutzeravatar
cofi
Moderator
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Beitragvon cofi » Dienstag 18. November 2008, 15:12

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

Beitragvon BlackJack » Dienstag 18. November 2008, 16:30

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:

Beitragvon roschi » Mittwoch 19. November 2008, 14:24

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?
Fuer Alle, die in Python einsteigen wollen, kann ich das Buch A Byte of Python nur waermstens empfehlen!
Nko
User
Beiträge: 13
Registriert: Sonntag 19. Oktober 2008, 18:02

Beitragvon Nko » Montag 24. November 2008, 10:51

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:

Beitragvon roschi » Samstag 29. November 2008, 09:12

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
Fuer Alle, die in Python einsteigen wollen, kann ich das Buch A Byte of Python nur waermstens empfehlen!

Wer ist online?

Mitglieder in diesem Forum: Bing [Bot], kbr