我需要各种仪器的完整样品.提供此资源的一个这样的网站(http://theremin.music.uiowa.edu/MIS.html)很好,但是没有足够的非古典乐器(例如钢吉他,鼓).
我需要一个不同的资源来提供乐器样本,例如MIDI规范支持的样本.
附注:我只需要为每种仪器提供中间C样品.
我正在尝试从wav文件中打印出一个wave,但是我对于我应该为样本采用的长度感到很遗憾.
这就是我喜欢的(没有颜色):

因此,为了读取我的数据,我使用以下代码:
// first we need to read our wav file, so we can get our info:
byte[] wav = File.ReadAllBytes(filename);
// then we are going to get our file's info
info.NumChannnels = wav[22];
info.SampleRate = bytesToInt(wav[24], wav[25]);
// nr of samples is the length - the 44 bytes that where needed for the offset
int samples = (wav.Length - 44) / 2;
// if there are 2 channels, we need to devide the nr of sample in 2 …Run Code Online (Sandbox Code Playgroud) 我正在尝试读取一个wav文件,然后操作其内容,逐个样本
这是我到目前为止所拥有的:
import scipy.io.wavfile
import math
rate, data = scipy.io.wavfile.read('xenencounter_23.wav')
for i in range(len(data)):
data[i][0] = math.sin(data[i][0])
print data[i][0]
Run Code Online (Sandbox Code Playgroud)
我得到的结果是:
0
0
0
0
0
0
Run Code Online (Sandbox Code Playgroud)
等等
它正在读取,因为如果我写,print data[i]我通常得到大小为2的非零数组.
似乎scipy.io.wavfile.read无法读取24位.wav文件.你对如何处理它们有所了解吗?
我找到了pyDub,看起来就像我需要的那样:
唯一的问题是产生沉默.pyDub可以这样做吗?
基本上我想要的工作流程是:
这可能吗?我意识到我可以创建一个沉默的WAV并以这种方式(间隔GIF闪回,任何人?),但我更喜欢以编程方式生成静音,因为我可能想要尝试沉默和/或比特率的持续时间的MP3.
我非常感谢任何回复.
使用Firefox 36.0.1
文件类型:
file.wav:setgid RIFF(小端)数据,WAVE音频,ITU G.711 A-law,单声道8000 Hz
Firefox无法显示<audio>标记,并在控制台中抱怨为:
媒体资源http://.../file.wav无法解码.
从Chrome开始工作.
有什么建议?
我正在尝试在html5中创建一个网页,该网页存储数组中wav文件的样本数据.有没有办法用javascript获取样本数据?我正在使用文件输入来选择wav文件.
在我已添加的javascript中:
document.getElementById('fileinput').addEventListener('change', readFile, false);
Run Code Online (Sandbox Code Playgroud)
但是我不知道在readFile中要做什么.
编辑:我试图在ArrayBuffer中获取文件,将其传递给decodeAudioData方法并从中获取一个typedArraybuffer.这是我的代码:
var openFile = function(event) {
var input = event.target;
var audioContext = new AudioContext();
var reader = new FileReader();
reader.onload = function(){
var arrayBuffer = reader.result;
console.log("arrayBuffer:");
console.log(arrayBuffer);
audioContext.decodeAudioData(arrayBuffer, decodedDone);
};
reader.readAsArrayBuffer(input.files[0]);
};
function decodedDone(decoded) {
var typedArray = new Uint32Array(decoded, 1, decoded.length);
console.log("decoded");
console.log(decoded);
console.log("typedArray");
console.log(typedArray);
for (i=0; i<10; i++)
{
console.log(typedArray[i]);
}
}
Run Code Online (Sandbox Code Playgroud)
typedArray的元素都是0.我创建typedArray的方法是错误的还是我做了别的错误?
编辑:我终于明白了.这是我的代码:
var openFile = function(event) {
var input = event.target;
var audioContext = new AudioContext();
var reader …Run Code Online (Sandbox Code Playgroud) 我正试图在c中产生锯齿波.我已经接近我的工作,但我有一个必须解决的问题.我在下面附上了clode.
#include <stdbool.h>
#include <stdio.h>
#include <stdlib.h>
#include <tgmath.h>
/******************************
* Magic file format strings. *
******************************/
const char fChunkID[] = {'R', 'I', 'F', 'F'};
const char fFormat[] = {'W', 'A', 'V', 'E'};
const char fSubchunk1ID[] = {'f', 'm', 't', ' '};
const char fSubchunk2ID[] = {'d', 'a', 't', 'a'};
/********************************
* WriteWavePCM() configuration: *
* - 2 channels, *
* - frequency 44100 Hz. *
********************************/
const unsigned short N_CHANNELS = 2;
const unsigned int SAMPLE_RATE = 48000;
const …Run Code Online (Sandbox Code Playgroud) 我试图在Python中以编程方式拆分wav文件.基于stackoverflow的提示以及Python wave模块的文档,我正在执行以下操作
import wave
origAudio = wave.open('inputFile.wav','r')
frameRate = origAudio.getframerate()
nChannels = origAudio.getnchannels()
sampWidth = origAudio.getsampwidth()
start = float(someStartVal)
end = float(someEndVal)
origAudio.setpos(start*frameRate)
chunkData = origAudio.readframes(int((end-start)*frameRate))
chunkAudio = wave.open('outputFile.wav','w')
chunkAudio.setnchannels(nChannels)
chunkAudio.setsampwidth(sampWidth)
chunkAudio.setframerate(frameRate)
chunkAudio.writeframes(chunkData)
chunkAudio.close()
Run Code Online (Sandbox Code Playgroud)
我迭代了许多不同的开始和结束值,并以这种方式从原始文件中提取音频块.奇怪的是,这种技术对于某些块来说非常好,并且会为其他块产生垃圾白噪声.此外,没有明显的模式,其中开始和结束位置产生白噪声,只是它一直发生输入文件.
以前有人经历过这种行为吗?或者知道我做错了什么?欢迎以编程方式更好地分割音频文件的建议.
提前致谢.
我想使用 pyaudio 和 IBM Bluemix 服务实现简单的语音转文本工具。目前我需要录制音频,将其保存到磁盘,然后再次加载以将其发送到 Bluemix。
RATE=44100
RECORD_SECONDS = 10
CHUNKSIZE = 1024
# initialize portaudio
p = pyaudio.PyAudio()
stream = p.open(format=pyaudio.paInt16, channels=1, rate=RATE, input=True, frames_per_buffer=CHUNKSIZE)
frames = [] # A python-list of chunks(numpy.ndarray)
print("Please speak!")
for _ in range(0, int(RATE / CHUNKSIZE * RECORD_SECONDS)):
data = stream.read(CHUNKSIZE)
frames.append(np.fromstring(data, dtype=np.int16))
#Convert the list of numpy-arrays into a 1D array (column-wise)
numpydata = np.hstack(frames)
# close stream
stream.stop_stream()
stream.close()
p.terminate()
# save audio to disk
wav.write('out.wav',RATE,numpydata)
# Open audio file(.wav) …Run Code Online (Sandbox Code Playgroud)