1.『开发技巧』Python音频操作工具PyAudio上手教程
2.å¦ä½å®è£
Homebrew以åPython
3.MacOS 系统中如何设置 Python 虚拟环境
4.程序员macos有哪些必装软件?源码
5.开源RPC项目Apache Thrift
『开发技巧』Python音频操作工具PyAudio上手教程
Python音频操作工具PyAudio上手教程
0.引子
当需要使用Python处理音频数据时,使用python读取与播放声音必不可少,源码下面介绍一个好用的源码处理音频PyAudio工具包。
PyAudio是源码Python开源工具包,由名思义,源码是源码番摊飞艇源码提供对语音操作的工具包。提供录音播放处理等功能,源码可以视作语音领域的源码OpenCv。
1.简介
PyAudio为跨平台音频I / O库 PortAudio提供 Python 绑定。源码使用PyAudio,源码您可以轻松地使用Python在各种平台上播放和录制音频,源码例如GNU / Linux,源码Microsoft Windows和Apple Mac OS X / macOS。源码
PyAudio的源码灵感来自:
2.安装
目前的版本是PyAudio v0.2.。在大多数平台上使用pip安装PyAudio。源码对于v0.2.9之前的版本,PyAudio分发安装二进制文件,这些文件 存档在这里。
微软Windows
使用 pip安装:
python -m pip install pyaudio
Apple Mac OS X.
使用 Homebrew安装必备的portaudio库,然后使用pip安装PyAudio:
brew install portaudio pip install pyaudio
Debian / Ubuntu
使用包管理器安装PyAudio:
sudo apt-get install python-pyaudio python3-pyaudio
如果没有最新版本的PyAudio,请使用pip安装它:
pip install pyaudio
PyAudio来源
源代码可从Python Package Index(PyPI)下载: pypi.python.org/pypi/PyAudio。
或克隆git存储库:
git clone people.csail.mit.edu/hu...
要从源代码构建PyAudio,您还需要构建 PortAudio v。有关为各种平台构建PyAudio的一些说明,请参阅 编译提示。要使用Microsoft Visual Studio构建PyAudio,请查看Sebastian Audet的bgcc源码 说明。
3.示例
1).采集音频
下面以一段代码演示如何从计算机麦克风采集一段音频,采集音频时长 4s,保存文件 output.wav。使用了tqdm模块,可以方便显示出来读取过程。
要使用PyAudio,首先使用 pyaudio.PyAudio()(1)实例化PyAudio ,它设置portaudio系统。要录制或播放音频,请使用 pyaudio.PyAudio.open() (2)在所需设备上打开所需音频参数的流。这设置了 pyaudio.Stream播放或录制音频。
通过使用流式传输 pyaudio.Stream.write()音频数据或使用流式传输音频数据来播放音频 pyaudio.Stream.read()。(3)请注意,在“阻止模式”中,每个 pyaudio.Stream.write()或 pyaudio.Stream.read()阻止直到所有给定/请求的帧都被播放/记录。或者,要动态生成音频数据或立即处理录制的音频数据,请使用下面概述的“回调模式”。
使用 pyaudio.Stream.stop_stream()暂停播放/录制,并 pyaudio.Stream.close()终止流。(4)最后,使用 pyaudio.PyAudio.terminate()(5)终止portaudio会话。
2).播放音频
下面使用播放的功能来播放1)中保存的音频 output.wav。通过tqdm,显示播放进度条。
当需要在执行其他程序时同时播放音频,解析 源码可以使用回调的方式播放,示例代码如下:
å¦ä½å®è£ Homebrew以åPython
为ä»ä¹è¦ä½¿ç¨Homebrew
Mac OS Xæ¯åºäºUnixçï¼å®å¯ä»¥ä½¿ç¨é常å¤Linuxå¹³å°ä¸å¼æºçä¼ç§å·¥å ·ï¼æ¯å¦wgetï¼æ¯å¦dos2unixèæ¬å·¥å ·çã
ä½æ¯OS Xç³»ç»æ¬èº«å´ç¼ºå°Linuxä¸å¾å 管çå¨ãæ¯å¦Fedoraçyumä¸dnfï¼æ¯å¦Ubuntuçapt-getï¼æ¯å¦ArchLinuxçPacmançã
äºæ¯è¿äºä¼ç§çå¼æºè½¯ä»¶å¨Macä¸çå®è£ åªè½éè¿ä¸è½½æºç ï¼ç¼è¯ï¼å®è£ ï¼é ç½®ç¯å¢åéçæ¥éª¤æ¥å®æå®è£ ã对äºå¤§é¨åç软件ï¼å¨å®è£ è¿ç¨ä¸æ¯éè¦å¾å¤çä¾èµåºçï¼æå¨å»è§£å³è¿äºä¾èµåºæ¯ååçè¦çäºæ ãå 管çå¨å¹²çå°±æ¯è¿æ ·çäºæ ï¼è§£å³è½¯ä»¶å®è£ è¿ç¨ä¸çä¾èµå ³ç³»ã
æä¸ä¸ªå¼æºç项ç®å«Homebrewï¼å®ç¾è§£å³äºMac OS Xä¸æ²¡æå 管çå¨çå°´å°¬ã
ç¾åº¦HomeBrewå¯ä»¥åç°ä»¥ä¸ä¸¤æ¡é¾æ¥ï¼
Homebrew â The missing package manager for macOS
Homebrew â macOS ä¸å¯æ缺çå¥ä»¶ç®¡çå¨
ç¹å»é¾æ¥ä¼è·³è½¬å°HomeBrewçå®ç½ï¼
æå¼ç»ç«¯çªå£ï¼è¾å ¥ä»¥ä¸å½ä»¤
/usr/bin/ruby -e "$(curl -fsSL )"
å³å¯æåå®è£ HomeBrewã
å¯è½å°ç°å¨ä½ è¿ä¸ç¥éå°åºHomeBrewæä»ä¹ç¨ï¼é£æ们ç¨å®å®è£ ä¸ä¸Pythonï¼å 为æçMac OSç³»ç»æ¯.çï¼æ以æè¦å®è£ 3.Xçpythonçæ¬ã
å¨ç»ç«¯è¾å ¥ä»¥ä¸å½ä»¤ï¼
brew install python3
å°±å¯ä»¥è½»æ¾easyå®è£ pythonäºï¼å®è£ å®æåæ示
大æå°±æ¯ï¼pythonå®è£ å®æï¼å ·ä½è·¯å¾æ¯ï¼/usr/local/Cellar/python3/3.6.0ï¼å¯ä»¥å¨finderä¸åå¾ï¼
并éè¿ä»¥ä¸å½ä»¤æ软件é¾æ¥å°LaunchPadä¸ï¼ä¹å°±æ¯åºç¨ç¨åºéã
è¯ä¸ä¸ï¼
brew linkapps python3
å®æåæ示ï¼
åä¸çlaunchPadæç¶å¤äºä¸¤ä¸ªAPPï¼
MacOS 系统中如何设置 Python 虚拟环境
在 MacOS 中设置 Python 虚拟环境,推荐使用 pyenv 和 virtualwrapper 工具。
首先,在终端中输入命令 xcode-select --install 来配置开发环境,这将安装许多常用的工具和实用程序,如 make、GCC、clang 等。
接着,安装 Homebrew,执行 Ruby 脚本进行安装。可点击脚本查看具体功能,确保无误后,Homebrew 将成为优秀的包管理工具。
避免直接使用 brew install python,转而使用 pyenv 进行 Python 版本管理。运行命令安装 pyenv,并将其配置添加到 .bash_profile 文件中,以确保每个终端都使用 pyenv 管理 PATH 环境。
在安装 pyenv 之前,确保安装 zlib 压缩算法和 SQLite 数据库。通过执行命令确保这些依赖项正确配置,避免构建问题。
安装 pyenv 后,选择合适的libharu源码 Python 版本进行安装,整个过程可能需要一段时间。
接下来,安装 virtualenvwrapper,以实现虚拟环境的管理。在 .bash_profile 文件中添加相关配置,确保每次打开新终端时有效。
虚拟环境允许你隔离项目之间的依赖关系,使用 virtualenvwrapper 工具链设置多个项目并切换它们,通过命令 deactivate 退出当前环境。
对于长期项目,使用 ~/src 目录管理。新项目时,根据目录名自动创建虚拟环境。若需刷新项目虚拟环境,通过命令删除虚拟环境即可,源代码不受影响。
使用 pyenv 和 virtualwrapper 管理虚拟环境,能避免开发环境与运行环境中的 Python 版本不一致的问题,尤其适用于团队协作时。
对于 Python 初学者或中级使用者,建议阅读 MacOS 中使用 Python 3 文章。有关 Python 的问题,欢迎在评论区提问,我们将在下篇文章中解答。
程序员macos有哪些必装软件?
Mac系统因其流畅的运行和强大的处理能力,受到程序开发者们的minicap 源码广泛欢迎。本期将为大家推荐作为软件开发者在Mac上必备的软件。推荐的软件包括:
1、Homebrew:Mac系统的第三方包管理器,更新速度快,软件包丰富。但更新系统后,可能需要重新配置一些软件。推荐安装命令:`brew install package`。国内使用可能较慢,可通过更改源解决。
2、Google Chrome:在浏览器选择上,Google Chrome因其优秀的代码调试和插件使用体验,被广大开发者推崇。
3、Webstorm:推荐前端编辑器,无需安装和配置大量插件,提供了一切所需功能。虽然需要付费,但网上有破解版本。
4、Python + PyCharm:AI领域的热门语言,配合PyCharm可以提高开发效率。使用Anaconda和pip时注意国内镜像源。
5、IntelliJ IDEA:Java开发集成环境,提供智能代码生成、项目重构等功能,提高开发效率。
6、Visual Studio Code:轻量级且功能强大的源代码编辑器,适合编写Web和云应用程序。
7、Sublime Text:功能强大的代码编辑器,提供Python插件、完整的Python API、Goto功能等。
8、iTerm2:替换默认终端的首选工具,提供分割面板、快捷键增强、优化的搜索等功能。
9、Navicat Premium:数据库管理工具,支持多类型资料库的管理。
、Docker Desktop:设置资源限制,配置Docker引擎,提供日志查看和容器管理功能。
、Dash:API文档浏览器,离线搜索API,提供丰富的编程语言和框架文档。
、JProfiler:帮助开发者分析和优化Java代码的工具。
、Parallels Desktop:虚拟机软件,可以在Mac上运行Windows应用程序。
、Typora:专业的Markdown编辑器,集成编辑与预览功能。
、uTools:集成了快速启动、取色、翻译等功能的系统增强软件。
、Microsoft Remote Desktop:Mac上的远程桌面控制软件,方便管理Windows平台的程序。
、Redis Desktop Manager:可视化工具,支持跨平台使用。
、Alfred:提高工作效率的快速启动工具,集成了多种快捷操作功能。
、MAMP Pro:简化Web开发环境搭建,支持Macintosh、Apache、MySQL和PHP。
、Xcode:苹果系开发工具,适合开发苹果相关软件,提供命令行工具和开源软件支持。
开源RPC项目Apache Thrift
Apache Thrift是一个用于开发跨平台、跨语言服务的软件框架。它提供了一个代码生成引擎,构建的服务可在多种语言间无缝高效运行,支持如C++, Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, JavaScript, Node.js, Smalltalk, OCaml, 和 Delphi等语言。Thrift的精髓在于其代码生成能力,使得服务开发完成后,可自动转换生成对应语言的源代码,便于多种语言间的调用。
安装和使用Thrift非常简单,对于使用Mac系统的用户,可以通过命令行使用`brew install thrift`完成安装。创建Thrift文件是使用Thrift的基本方式,定义服务接口和数据类型。执行命令后,Thrift生成的源代码能够被多种语言的客户端和服务器直接使用。例如,生成的Java代码中,一个简单的Thrift文件可以自动转换为包含数百行代码的类文件,如`UserProfile.java`,包含UserProfile结构的完整实现。
Thrift提供了丰富的序列化和反序列化功能,这在RPC(远程过程调用)和网络通信中尤为重要。Thrift定义了一套自定义的协议和结构,以支持跨语言服务的通信。这些结构和协议的生成是基于语言无关的设计,确保了Thrift的灵活性和兼容性。Thrift的服务接口由TBase继承,提供基础方法,TStruct对应结构体,TField用于描述字段,而TTransport和TProtocol则分别负责处理输入输出和协议处理。
Thrift中的序列化实现是其关键特性之一,通过TProtocol类及其子类,实现了对Thrift类型和Java类型的序列化和反序列化。这使得Thrift能够跨语言传输数据,无需考虑底层数据格式的差异。在Thrift中,序列化和反序列化过程由Scheme接口及其实现(如StandardScheme和TupleScheme)来负责。SchemeFactory接口则用于获取适当的序列化方案。
Thrift的使用不局限于Java语言,Python、C#等语言同样支持Thrift服务的开发和调用。以Python为例,Thrift生成的代码需要依赖第三方包,但Thrift的通用接口(如TBase)确保了与语言无关的交互方式。Thrift的Schema接口定义了序列化和反序列化的基本逻辑,通过不同实现(如StandardScheme和TupleScheme)提供不同的优化策略,如在读取时先确定字段列表以减少读取字节数。
Thrift在实际应用中,如Apache Hive的MetaStore和Server2服务中得到了广泛使用。在Hive中,Thrift接口通过特定的实现(如ThriftBinaryCLIService)来支持服务调用。通过Thrift接口,Hive能够提供对外的REST服务或RPC服务,使外部应用程序能够通过标准协议(如HTTP或TCP)与Hive进行交互。
理解Thrift的关键在于其对代码生成的支持和对序列化、反序列化的高效处理,使得跨语言、跨平台的服务开发和调用变得简单而高效。Thrift不仅提供了强大的序列化能力,还为服务提供了一套统一的协议和结构定义,促进了不同语言服务的互操作性。