我在计算机系统课程中,并且一直在与Two's Complement一起挣扎.我想了解它,但我读过的所有内容并没有为我提供图片.我已经阅读了维基百科文章和其他各种文章,包括我的教科书.
因此,我想开始这个社区wiki帖子来定义Two's Complement是什么,如何使用它以及它如何在诸如强制转换(从有符号到无符号,反之亦然)等操作中影响数字,逐位操作和位移操作.
我所希望的是一个清晰简洁的定义,程序员很容易理解.
binary computer-science bit-manipulation twos-complement data-representation
我想使用Python来访问一个wav文件并以一种允许我分析它的形式编写它的内容(比方说数组).
我在numpy(1.4.0)上安装了一个较新的版本.但后来我遇到了一组新的错误:
回溯(最近通话最后一个):文件"test.py",7号线,在进口scikits.audiolab文件"/usr/lib/python2.5/site-packages/scikits/audiolab/ 初始化 py"为25行,从pysndfile进口formatinfo,sndfile文件"/usr/lib/python2.5/site-packages/scikits/audiolab/pysndfile/ 初始化的.py",1号线,从_sndfile进口sndfile,格式,available_file_formats,available_encodings文件"numpy的.pxd",第30行,在scikits.audiolab.pysndfile._sndfile中(scikits/audiolab/pysndfile/_sndfile.c:9632)ValueError:numpy.dtype似乎不是正确的类型对象
我放弃使用audiolab并认为我可以使用"wave"包来读取wav文件.我问了一个关于这个的问题,但人们建议改用scipy.好吧,我决定专注于scipy(我有0.6.0版本).
但是,当我尝试执行以下操作时:
来自scipy.io import wavfile
x = wavfile.read('/ usr/share/sounds/purple/receive.wav')
我得到以下内容:
Traceback (most recent call last):
File "test3.py", line 4, in <module>
from scipy.io import wavfile
File "/usr/lib/python2.5/site-packages/scipy/io/__init__.py", line 23, in <module>
from numpy.testing import NumpyTest
ImportError: cannot import name NumpyTest
Run Code Online (Sandbox Code Playgroud)
因此,我在一个学校项目中工作,必须处理较大的wav文件(> 250Mgb),我想知道为什么当我向audacity软件读取此类文件时,要花大约40秒钟才能读取和绘制,但是当使用script.io.wavfile.read将其读取到python时,它将永远持续下去。所以我的问题是,胆量软件如何使它这么快,这是我可以在python中做到的吗?
编辑:我在我的代码中添加了一个新部分,以计算和绘制WAV文件的包络,但是问题是尝试使用大型WAV文件时,这将花费数年时间。文件更快谢谢
这是我正在使用的代码:
import matplotlib.pyplot as plt
import numpy as np
from scipy.io.wavfile import read
from tkinter import filedialog
# Browse, read the signal and extract signal informations (fs, duration)
filename = filedialog.askopenfilename(filetypes = (("""
Template files""", "*.wav"), ("All files", "*")))
fs, data = read(filename, mmap=True)
T = len(data) / fs #duration
nsamples = T * fs #number of samples
time = np.linspace(0, T, nsamples)
# Compute the envelope of the signal
from scipy.signal import hilbert, chirp, resample
analytic_signal …Run Code Online (Sandbox Code Playgroud) 我想知道如何从.wav文件中获取样本,以便执行两个.wav文件的窗口连接.
任何人都可以告诉我该怎么做?
我有一点编程和转换麻烦.我正在设计一个AI来识别乐器演奏的音符,并需要从波形文件中提取原始声音数据.我的目标是在文件中的大块时间执行FFT操作以供AI使用.为此,我需要一个音频文件的振幅列表,但我似乎无法找到一个可行的转换技术.这些文件以MP3的形式开始,然后我将它们转换为wav文件,但是当我尝试读取它时,我总是会得到一个压缩文件,它会发出乱码.有谁知道我如何将wav文件转换为与Python波模块兼容的东西,甚至可以直接将数据转换为振幅列表?
我慢慢地致力于这哪里会是非常有用的,如果该计算机可以找到一个项目,其中在发生某种样本的MP3文件。我会将这个问题限制在一个相当精确的音频片段上,而不仅仅是例如同一乐队不同录音中的一首歌中的合唱,它会成为某种机器学习问题。我在想,如果它没有添加噪音并且来自同一个文件,那么应该可以在没有机器学习的情况下以某种方式定位它发生的时间,就像 grep 可以在文本文件中找到出现单词的行一样。
如果您身边没有 mp3,可以使用一些公共领域的网络上可用的音乐来设置问题,所以没有人抱怨:
curl https://web.archive.org/web/20041019004300/http://www.navyband.navy.mil/anthems/ANTHEMS/United%20Kingdom.mp3 --output godsavethequeen.mp3
Run Code Online (Sandbox Code Playgroud)
这是一分钟:
exiftool godsavethequeen.mp3 | grep Duration
Duration : 0:01:03 (approx)
Run Code Online (Sandbox Code Playgroud)
现在在 30 到 33 秒之间剪掉一点(那是 la la la la ..):
ffmpeg -ss 30 -to 33 -i godsavethequeen.mp3 gstq_sample.mp3
Run Code Online (Sandbox Code Playgroud)
文件夹中的两个文件:
$ ls -la
-rw-r--r-- 1 cardamom cardamom 48736 Jun 23 00:08 gstq_sample.mp3
-rw-r--r-- 1 cardamom cardamom 1007055 Jun 22 23:57 godsavethequeen.mp3
Run Code Online (Sandbox Code Playgroud)
出于某种原因,exiftool 似乎高估了样本的持续时间:
$ exiftool gstq_sample.mp3 | grep Duration
Duration : 6.09 s (approx)
Run Code Online (Sandbox Code Playgroud)
..但我想它只是像它告诉你的那样近似。
这是我所追求的:
$ findsoundsample gstq_sample.mp3 godsavethequeen.mp3 …Run Code Online (Sandbox Code Playgroud) 我有很大的 wav 文件(每个大约 4GB)。由于我的部署服务器有一个限制,每个进程不能使用超过 500 MB 的 RAM,因此我希望能够仅加载和处理音频文件的块,然后稍后读取并附加它们,例如一个文本文件。
我查看了pydub,但它似乎会在我可以切掉较小的块进行处理之前加载整个文件(如果我错了,请纠正我)。scipy.io.wavfile.read的情况也是如此。我希望能够读取大文件的块,处理它们,然后将它们放回去(理想情况下附加到硬盘驱动器上先前处理的块)。
我能找到的大多数可用的答案已经假设我可以将大文件加载到主内存中。