[ TAG 52 ][12.06.2021] - Erfolgreich - SOUNDFILE.SoundFile(...)
Wir haben gerade den [ 13.06.2021 ][ 09:30 ] ich befinde mich noch in der Orientierungsphase. Ich habe ein neues Modul [ IAP-20210601-20210612-1750 ] eröffnet.
import soundfile as sf
sf.SoundFile(file, mode, samplerate, channels, subtype, endian, format, closefd)
Die Abtastrate oder Abtastfrequenz, auch Samplingrate, Samplerate oder Samplingfrequenz ist in der Signalverarbeitung die Häufigkeit, mit der ein Anlogsignal in einer vorgegebenen Zeit abgetastet wird.
Im Modul [ IAP-20210601-20210609-2325 ] benutze ich den Begriff [ samplerate ] mit der Variable [ fs ]. Die [samplerate] ist au [ 44100 Hz ] gesetzt.
Quelle: https://de.wikipedia.org/wiki/Abtastrate
import soundfile as sf
sf.SoundFile(file, mode, samplerate, channels, subtype, endian, format, closefd)
The position of each audio source within the audio signal is called a channel. Each channel contains a sample indicating the amplitude of the audio beeing produced by that source at a given moment in time. For instance, in stereo sound, there are two audio sources: one speaker on the left, and one on the right.
[ IAP-20210601-20210605-0404 ] Während der Arbeit an diesen Modul ist mir bei der Analyse des NumPy-Array aufgefallen, dass jeder Sample ein zwei dimensionales Array ist. Da ich mich noch nicht so gut auskannte, habe ich die Struktur einfach analysiert um die benötigten Speicherkapazitäten berechnen zu können. Ich habe keine Informationen über die Bedeutung der Float32-Werte gehabt. Das zwei dimensionale Array resultiert aus der Anzahl der Channels.
Ein Sample, der eine Stereo-Aufnahme repräsentiert besteht aus zwei Channels. Es sind zwei Float32-Zahlen.
Quelle: https://developer.mozilla.org/en-US/docs/Web/Media/Formats/Audio_concepts
BLOG-Beitrag erweitert am [16.06.2021][0300]
import soundfile as sf
sf.SoundFile(file, mode, samplerate, channels, subtype, endian, format, closefd)
Unter [ subtype ] versteht man die Samlingtiefe und deren Codierung.
- Installiere [ soundfile ]
- [ pip install pysoundfile ]
- Quelle: [ https://pysoundfile.readthedocs.io/en/0.9.0/#installation ]
- Verfügbare Datenformate
- Verfügbare Subtypes und [ default subtypes ] für WAV:
- PCM - Puls-Code-Modulation kurz PCM ist ein Pulsmodulationverfahren, das ein zeit-und wertkontinuierliches analoges Signal in ein zeit- und wertdiskretes digitales Signal umsetzt.
- [ soundfile.default_subtype('WAV') = 'PCM_16' ]
- Quelle:
import soundfile as sf
sf.SoundFile(file, mode, samplerate, channels, subtype, endian, format, closefd)
Unter [ endian ] versteht man die Byte-Rheinfolge in der die Werte im Arbeitsspeicher organisiert sind.
Beim [ big-endian ] - Format wird das höchstwertige Byte zuerst gespeichert, also der kleinsten Speicheradresse. Zum Beispiel Stunde:Minute:Sekunde
Beim [ little-endian ] - Format wird dagegen das kleinstwertige Byte an der Anfangsadresse gespeichert. Zum Beispiel Tag.Monat.Jahr
Ich fand einen sehr interessanten Beitrag von Gary zu diesen Thema. [ big-endian ] und [ little-endian ] berühren das Thema, wie die Hardware von unterschiedlichen Herstellern die Bit-Sequenzen lesen.
- Quelle:
- Gary Explains: https://www.youtube.com/channel/UCRjSO-juFtngAeJGJRMdIZw
- https://de.wikipedia.org/wiki/Byte-Reihenfolge
- https://de.wikipedia.org/wiki/RIFF_WAVE
- https://www.youtube.com/watch?v=hYkkrEcpV3E
- https://www.youtube.com/watch?v=wjHlvQfo5uI
- https://www.youtube.com/watch?v=T1C9Kj_78ek
- https://www.youtube.com/watch?v=JrNF0KRAlyo
- https://www.youtube.com/watch?v=9Rgnl4o0Vv8
BLOG-Beitrag erweitert am [16.06.2021][0700]
import soundfile as sf
sf.SoundFile(file, mode, samplerate, channels, subtype, endian, format, closefd)
Im Beispiel [ https://python-sounddevice.readthedocs.io/en/0.4.1/examples.html#recording-with-arbitrary-duration ] wird das Attribut [ format ] nicht benutzt. Das Format der Datei wird anscheinend aus der Dateierweiterung im Attribut [ file ] hergeleitet.
Das letzte Attribut [ closefd ] wird ebenfalls nicht benutzt, weil man nicht mit [ file descriptoren ] arbeitet. In dem oben genannten Beispiel wird mit Python Objekten gearbeitet.
[ File Descriptors ] - Ich habe eine gute Erklärung zu diesen Begriff von "Rajendra Dharmkar" gefunden. Bei der Erarbeitung des [ soundfile ] Objektes und im Zusammenhang mit dem Anlegen einer Sounddatei ist mir der Begriff [ File Descriptor ] sehr oft untergekommen. Diese Erklärung von Rajendra Dharmkar vom 22.12.2017 hat mir am besten gefallen.
File descriptors are a low-level facility for working with files directly provided by the OS kernel. A file descriptor is an integer that identifies the open file in a table of open files kept by the kernel for each process. A number of system calls accept file descriptors, but they are not convenient to work with, typically requiring fixed-width buffers, multiple retries in certain conditions, and manual error handling.
File objects are Python classes that wrap file descriptors to make working with files more convenient and less error-prone. For example, they provide error-handling, buffering, line-by-line reading and are closed when garbage collected.
Quelle: https://www.tutorialspoint.com/What-is-a-file-descriptor-used-in-Python
System Calls
Anscheinend kann ein[ File Descriptor ] auch von Systemaufrufen (hier wird der Begriff "system calls") benutzt werden.
Dazu einige Quellen:
Kommentare
Kommentar veröffentlichen