PyAudio: PortAudio v19 Python Bindings 您所在的位置:网站首页 pyaudio播放mp3 PyAudio: PortAudio v19 Python Bindings

PyAudio: PortAudio v19 Python Bindings

#PyAudio: PortAudio v19 Python Bindings| 来源: 网络整理| 查看: 265

Snakey: Headphones wearing Python PyAudio

PyAudio provides Python bindings for PortAudio, the cross-platform audio I/O library. With PyAudio, you can easily use Python to play and record audio on a variety of platforms, such as GNU/Linux, Microsoft Windows, and Apple Mac OS X / macOS.

PyAudio is inspired by:

pyPortAudio/fastaudio: Python bindings for PortAudio v18 API. tkSnack: cross-platform sound toolkit for Tcl/Tk and Python. What's new March 18, 2017 PyAudio 0.2.11 is a new release with a bug fix related to memory management.

Many thanks to both Blaise Potard and Matthias Schaff for discovering the issue and for their patches! Thanks as well to Timothy Port for helping to correct a docstring.

January 16, 2017 PyAudio 0.2.10 is a new release with bug fixes related to the Python GIL. It also introduces a few automated unit tests.

Great thanks to Michael Graczyk for discovering the GIL-related issues and for submitting a patch!

October 19, 2015 PyAudio installation is better streamlined. Install PyAudio on most platforms using pip. October 18, 2015 PyAudio 0.2.9 is a new release with bug fixes related to overflow error handling and IOError exception arguments.

Many thanks to Tony Jacobson for discovering and helping with the overflow error. Thanks also to Sami Liedes for reporting the IOError exception issue!

April 12, 2014 PyAudio 0.2.8 is a new release with bug fixes related to the Python GIL and device name encoding.

Many thanks to Jason Roehm for discovering and patching the threading-related issue!

January 30, 2014 Many thanks to Sebastian Audet, who wrote instructions for building PyAudio using Microsoft Visual Studio! October 27, 2012 PyAudio 0.2.7 is a new release with: Modernized documentation format Fix for callback (non-blocking) operation Binaries for Python 3.3

Thanks again to Bastian Bechtold for his help converting the documentation for use with Sphinx! In addition, thanks to John K. Luebs for the callback fix.

October 14, 2012 PyAudio 0.2.6 is a new release with: Python 3 support Callback (non-blocking) operation Bug fixes

Many thanks to Bastian Bechtold and Bob Jamison for their contributions! Without their patches and Bastian's careful review, this release would still be far away. Also, great thanks to Danilo J. S. Bellini for reporting bugs.

Note: As of this update, PyAudio is compatible with Python 2.6, Python 2.7, and Python 3.2. For Python installations older than 2.6, use PyAudio 0.2.4.

August 22, 2012 This web page has been translated to French—thanks to the efforts of Cyril Danilevski! April 20, 2012 This web page has been translated to Russian—thanks to the efforts of Oleg Meister! March 7, 2012 This web page has been translated to German—thanks to the efforts of Olga Babenko! December 7, 2010 This web page has been translated to Belorussian—thanks to the efforts of Jason Fragoso! November 2, 2010 PyAudio 0.2.4 has been uploaded to Debian (sid). A huge thanks to Felipe Sateler for sponsoring the package! October 12, 2010 PyAudio 0.2.4 is a maintenance release—there are no new features or bug fixes. The binary packages now include PortAudio-v19 (r1535). The source for PyAudio is now in git (previously subversion). November 2, 2008 PyAudio 0.2.3 fixes several outstanding bugs (thanks to all who have sent patches); see the CHANGELOG for details. PyAudio 0.2.3 provides bindings for PortAudio-v19 (r1395) and now includes binary distributions for Python 2.4, 2.5, and 2.6. March 5, 2008 PyAudio 0.2.0 now works with both Python 2.4 and Python 2.5. Additionally, PyAudio features support for PortAudio's Mac OS X Host API Specific Stream Info extensions (e.g., for channel mapping)—see examples below. The new binary installers include an updated version of PortAudio-v19 (r1368).

More news...

Installation

The current version is PyAudio v0.2.11. Install PyAudio using pip on most platforms. For versions prior to v0.2.9, PyAudio distributed installation binaries, which are archived here.

Microsoft Windows

Install using pip:

python -m pip install pyaudio

Notes:

If pip is not already bundled with your installation of Python, get it here. pip will fetch and install PyAudio wheels (prepackaged binaries). Currently, there are wheels compatible with the official distributions of Python 2.7, 3.4, 3.5, and 3.6. For those versions, both 32-bit and 64-bit wheels are available. These binaries include PortAudio v19 v190600_20161030, built with MinGW. They support only the Windows MME API and do not include support for DirectX, ASIO, etc. If you require support for APIs not included, you will need to compile PortAudio and PyAudio. Apple Mac OS X

Use Homebrew to install the prerequisite portaudio library, then install PyAudio using pip:

brew install portaudio pip install pyaudio

Notes:

If not already installed, download Homebrew. pip will download the PyAudio source and build it for your version of Python. Homebrew and building PyAudio also require installing the Command Line Tools for Xcode (more information). Debian/Ubuntu

Use the package manager to install PyAudio:

sudo apt-get install python-pyaudio python3-pyaudio

If the latest version of PyAudio is not available, install it using pip:

pip install pyaudio

Notes:

pip will download the PyAudio source and build it for your system. Be sure to install the portaudio library development package (portaudio19-dev) and the python development package (python-all-dev) beforehand. For better isolation from system packages, consider installing PyAudio in a virtualenv. PyAudio Source

Source is available for download at the Python Package Index (PyPI): pypi.python.org/pypi/PyAudio.

Or clone the git repository:

git clone https://people.csail.mit.edu/hubert/git/pyaudio.git

To build PyAudio from source, you will also need to build PortAudio v19. See compilation hints for some instructions on building PyAudio for various platforms. To build PyAudio using Microsoft Visual Studio, check out Sebastian Audet's instructions.

Documentation & Examples

Browse the PyAudio API documentation. PyAudio roughly mirrors the PortAudio v19 API 2.0.

The PyAudio source distribution contains a set of demos. Here's a selection from that set:

Play Record Wire Play (Callback) Wire (Callback) Channel Maps """PyAudio Example: Play a WAVE file.""" import pyaudio import wave import sys CHUNK = 1024 if len(sys.argv) """ PyAudio Example: Make a wire between input and output (i.e., record a few samples and play them back immediately). """ import pyaudio CHUNK = 1024 WIDTH = 2 CHANNELS = 2 RATE = 44100 RECORD_SECONDS = 5 p = pyaudio.PyAudio() stream = p.open(format=p.get_format_from_width(WIDTH), channels=CHANNELS, rate=RATE, input=True, output=True, frames_per_buffer=CHUNK) print("* recording") for i in range(0, int(RATE / CHUNK * RECORD_SECONDS)): data = stream.read(CHUNK) stream.write(data, CHUNK) print("* done") stream.stop_stream() stream.close() p.terminate() """PyAudio Example: Play a wave file (callback version)""" import pyaudio import wave import time import sys if len(sys.argv) """PyAudio Example: Mac OS X-only: Play a wave file with channel maps.""" import pyaudio import wave import sys chunk = 1024 PyAudio = pyaudio.PyAudio if len(sys.argv) left speaker; no right channel # channel_map = (0, -1) # right channel audio --> right speaker; no left channel # channel_map = (-1, 1) # left channel audio --> right speaker # channel_map = (-1, 0) # right channel audio --> left speaker channel_map = (1, -1) # etc... try: stream_info = pyaudio.PaMacCoreStreamInfo( flags=pyaudio.PaMacCoreStreamInfo.paMacCorePlayNice, # default channel_map=channel_map) except AttributeError: print("Sorry, couldn't find PaMacCoreStreamInfo. Make sure that " "you're running on Mac OS X.") sys.exit(-1) print("Stream Info Flags:", stream_info.get_flags()) print("Stream Info Channel Map:", stream_info.get_channel_map()) # open stream stream = p.open( format=p.get_format_from_width(wf.getsampwidth()), channels=wf.getnchannels(), rate=wf.getframerate(), output=True, output_host_api_specific_stream_info=stream_info) # read data data = wf.readframes(chunk) # play stream while data != '': stream.write(data) data = wf.readframes(chunk) stream.stop_stream() stream.close() p.terminate() License PyAudio is distributed under the MIT License:

Copyright (c) 2006 Hubert Pham

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Acknowledgements

The development of PyAudio was funded in part by the Cambridge-MIT Institute and T-Party.

Many thanks to Andrew Baldwin, Alex ThreeD, Timothée Lecomte, Frank Samuelson, Matthieu Brucher, Chris Stawarz, Barry Walker, Bob Jamison, Danilo J. S. Bellini, Bastian Bechtold, Christoph Gohlke, Sebastian Audet, Jason Roehm, Tony Jacobson, Sami Liedes, Michael Graczyk, Blaise Potard, Matthias Schaff, and Timothy Port for their much appreciated suggestions and patches—as well as to others who have written to say hello!

Special thanks to Felipe Sateler and Justin Mazzola Paluska for Debian/Ubuntu packaging help.

Contact For help with PyAudio, your best bet for a timely response is to consult or post to StackOverflow.

Comments, suggestions, and patches welcomed. Send mail to my first name at mit.edu.

hubert


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有