Comments (3)
Let me try again, I think I have a better repro.
Say I create a brand new fresh venv, and then I install python-soundfile. I then run this ultra-simple script:
import soundfile
soundfile.write("test.wav", [[0,0]], 48000)
This fails with "ModuleNotFoundError: No module named 'numpy'". (So does read().)
Looking in setup.py, I find that there is a "numpy" feature in extras_require, and that it does create a numpy dependency. But you only get this if you (?) install with pip install soundfile[numpy]
, and this is not documented either in the toplevel documentation or the documentation for the functions (such as read
and write
) which require numpy. (It is mentioned in the changelog that read and write require numpy but buffer_read and buffer_write do not, but this is not a very clear place for it.)
So my "expected behavior" would be one of the following changes:
- Move numpy from an extras_require to a regular install require (if it helps, I got this working locally and submitted it as PR #409 ). If, as you say, nearly all users of python-soundfile use numpy already, then this change would be harmless.
- If it is important to you to support the no-numpy buffer_read/buffer_write case, then more specifically document the existence of soundfile[numpy] and specifically note in the function documentation which functions require numpy. (A warning message, or addition to the exception's error string, like "install with soundfile[numpy] to fix this" when the ModuleNotFoundError is raised from read() and write(), would also be helpful, but not required.)
from python-soundfile.
I agree. Let's require numpy for the next version of soundfile. The entire point of the library is to expose a numpy interface to libsndfile.
from python-soundfile.
Soundfile can indeed be used without numpy, if you use the buffer_*
functions.
These were perhaps a bad idea, as almost all people no doubt use soundfile with numpy. But backwards compatibility is a thing, so that's how it is.
from python-soundfile.
Related Issues (20)
- Feature request: Support interleaved stereo data HOT 4
- buffer_read doesn't work in basic test HOT 2
- Soundfile read/write wav is not symmetric with default arguments HOT 3
- module 'soundfile' has no attribute 'SoundFileRuntimeError' HOT 5
- Value Error: array is too big when loading .flac file
- soundfile crashes when trying to export long .ogg file HOT 1
- soundfile.LibsndfileError: Error opening <_io.BytesIO object at 0x0000022B81C21850>: Format not recognised. HOT 2
- Cannot suppress warnings when decoding mp3
- Cannot open Ogg FLAC file: unknown error in flac decoder HOT 1
- miniforge3/lib/python3.9/site-packages/soundfile.py", line 1229, in _init_virtual_io def vio_get_filelen(user_data): MemoryError: Cannot allocate write+execute memory for ffi.callback(). You might be running on a system that prevents this. For more information, see https://cffi.readthedocs.io/en/latest/using.html#callbacks
- Cannot write Ogg files over 96 seconds long at 44.1 kHz HOT 4
- soundfile.info does not work on mp3 HOT 2
- soundfile.LibsndfileError: <exception str() failed> HOT 6
- How to save left and right channel in separate files? HOT 1
- soundfile.LibsndfileError: Error : unknown error in flac decoder. HOT 2
- "Format not recognised." for m4a files HOT 2
- soundfile.LibsndfileError: Error opening <tempfile._TemporaryFileWrapper object at 0x7feadae59070>: Format not recognised. HOT 2
- Part of mp3 is loaded. HOT 2
- unknown error in flac decoder HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from python-soundfile.