我别无选择,只能直接在浏览器中播放wav文件(不幸的是,服务器端编码为mp3不是一种选择.)
最好的方法是什么?我真的很想利用HTML 5音频标签,但我的目标受众包括许多使用IE6的青少年.据我所知,闪存不是一种选择,但快速播放确实至关重要.
谢谢.
我开始了一个小项目,包括使用MIDI文件.我一直在想,是否有任何C#或VB.Net代码可以实现MIDI和WAV文件之间的转换?
我有一个2秒16位单通道8khz wav文件,我需要改变它的音量.
这应该是非常简单的,因为改变音量与改变信号的幅度是一样的,我只需要对它进行衰减,即将它乘以0到1之间的数字.但它不起作用:新的声音较低,但非常充满噪音.我究竟做错了什么?
这是我的代码:
import wave, numpy, struct
# Open
w = wave.open("input.wav","rb")
p = w.getparams()
f = p[3] # number of frames
s = w.readframes(f)
w.close()
# Edit
s = numpy.fromstring(s, numpy.int16) * 5 / 10 # half amplitude
s = struct.pack('h'*len(s), *s)
# Save
w = wave.open("output.wav","wb")
w.setparams(p)
w.writeframes(s)
w.close()
Run Code Online (Sandbox Code Playgroud)
感谢你们!
我有一个应用程序 (A),它向另一个应用程序 (B) 发出 ajax 请求以获取波形声音文件的链接。然后,我想使用该链接直接从我的应用程序 (A) 播放该声音文件。
我尝试创建一个新audio标签,但在控制台中出现以下错误。
在 Chrome 中
无法播放....NotSupportedError:无法加载,因为找不到支持的源。
在火狐中
无法播放....NotSupportedError: src 属性或分配的媒体提供程序对象指示的媒体资源不合适。
这是我的回调方法,它是在 ajax 请求与来自我的应用程序 (B) 的链接一起返回后触发的。
function playAudio(data) {
if(!data || !data.DownloadUrl) {
return;
}
var audio = new Audio(data.DownloadUrl);
audio.type = 'audio/wav';
var playPromise = audio.play();
if (playPromise !== undefined) {
playPromise.then(function () {
console.log('Playing....');
}).catch(function (error) {
console.log('Failed to play....' + error);
});
}
}
Run Code Online (Sandbox Code Playgroud)
我怎样才能成功,让这个 wav 文件播放?
我正在制作一个采样器程序,其中从1到9的每个键将发出不同的声音.一切正常,但当我同时按下两个(或更多)声音时,第二个"杀死"第一个声音.
我正在使用.WAV文件播放声音SoundPlayer.我怎么解决这个问题?
我正在尝试开发一个简单的C应用程序,它可以在WAV文件中的给定时间戳下在特定频率范围内给出0-100的值.
示例:我的频率范围为44.1kHz(典型的MP3文件),我想将该范围分成n个范围(从0开始).然后我需要得到每个范围的幅度,从0到100.
到目前为止我管理的内容:
使用libsndfile我现在能够读取WAV文件的数据.
infile = sf_open(argv [1], SFM_READ, &sfinfo);
float samples[sfinfo.frames];
sf_read_float(infile, samples, 1);
Run Code Online (Sandbox Code Playgroud)
但是,我对FFT的理解相当有限.但我知道为了使振幅达到我需要的范围是必需的.但是我该如何继续前进呢?我找到了FFTW-3库,它似乎适用于此目的.
我在这里找到了一些帮助:https://stackoverflow.com/a/4371627/1141483
并在这里查看了FFTW教程:http://www.fftw.org/fftw2_doc/fftw_2.html
但由于我不确定FFTW的行为,我不知道从这里开始.
另一个问题,假设您使用libsndfile:如果强制读取单引导(使用立体声文件)然后读取样本.那么你真的只会阅读总文件的一半样本吗?其中一半来自频道1,还是自动过滤出来?
非常感谢您的帮助.
编辑:我的代码可以在这里看到:
double blackman_harris(int n, int N){
double a0, a1, a2, a3, seg1, seg2, seg3, w_n;
a0 = 0.35875;
a1 = 0.48829;
a2 = 0.14128;
a3 = 0.01168;
seg1 = a1 * (double) cos( ((double) 2 * (double) M_PI * (double) n) / ((double) N - (double) 1) );
seg2 = a2 * (double) cos( …Run Code Online (Sandbox Code Playgroud) 我正在尝试将MIDI文件转换为WAVOS X上的文件.
到目前为止,我有这个:
fluidsynth -F output_sound soundfont.sf2 note.mid
Run Code Online (Sandbox Code Playgroud)
这会创建一个output_sound文件,但是,该文件不是WAV,它似乎是sint16格式,因为我得到了这个输出:
~ $ fluidsynth -O help
FluidSynth version 1.1.6
Copyright (C) 2000-2012 Peter Hanappe and others.
Distributed under the LGPL license.
SoundFont(R) is a registered trademark of E-mu Systems, Inc.
-O options (audio file format):
's16'
Run Code Online (Sandbox Code Playgroud)
有没有一种简单的方法可以将终端(或任何可编写脚本的方式)转换output_sound为WAV文件?
我有输入文件:infile.mp3这个文件包含元数据(艺术家,流派等)我尝试删除输出wav文件的所有元数据.
是! 我找到了选项:
-map_metadata -1
但输出对我来说意外......
$ ffmpeg -i infile.mp3 -acodec pcm_s16le -ac 2 -ar 44100 -map_metadata -1 ./outfile.wav
好!
$ ffprobe outfile.wav
Input #0, wav, from 'inp.wav':
Metadata:
encoder : Lavf56.25.101
Duration: 00:04:00.47, bitrate: 1411 kb/s
Stream #0:0: Audio: pcm_s16le ([1][0][0][0] / 0x0001), 44100 Hz, 2 channels, s16, 1411 kb/s
Run Code Online (Sandbox Code Playgroud)
你看?编码器元数据存在
在带有"fmt"值的"subchunk1_id"之后的wav标题中,我期望"subchunk2_id"具有"数据"值(清楚的预期示例):
$ strings outfile.wav | more
RIFFFB
WAVEfmt
data
Run Code Online (Sandbox Code Playgroud)
但它不是(LIST,INFOISFT等):
$ strings outfile.wav | more
RIFFFB
WAVEfmt
LIST
INFOISFT
Lavf56.25.101
data
Run Code Online (Sandbox Code Playgroud)
那么..如何真正删除输出文件的所有元数据?
我需要任何python库来更改wav文件的音高,而无需任何原始音频数据处理。我花了几个小时才找到它,但是只发现了一些奇怪的原始数据处理代码片段和视频,它们显示了实时音调变化,但是没有源代码。
Media Recorder非常适合我,可以与 Mozilla 上记录的其余 Web Audio API 一起完成相当复杂的过程。然而。除非我能让它以波形格式一致地录制音频,否则它对我来说毫无用处。我曾尝试在许多浏览器上设置 MimeType,但在 Mozilla 不知情的情况下,这些浏览器似乎已被弃用,任何设置 mimeType 的尝试(即使使用此处文档中的示例)也无法在任何代码中工作。
如果有人有任何方法可以使用前端处理(不使用服务器中介)将此文件保存为波形,我将非常感激听到它。
可能值得注意的是,只要文件编码是 wav,ogg 格式以前就对我有效。这个带有源代码的示例直到几天前才在我的浏览器(Brave/Chrome)上运行,之后它开始保存为 webm 格式。
另外,值得注意的是,只要我能够在录制后使用 WebAudioAPI 获取通道数据进行处理,我就不会在这个项目中使用 MediaRecorder API。
wav ×10
audio ×6
c# ×2
javascript ×2
midi ×2
python ×2
.net ×1
c ×1
ffmpeg ×1
fft ×1
fftw ×1
fluidsynth ×1
html5-audio ×1
libsndfile ×1
macos ×1
metadata ×1
pitch ×1
volume ×1
wave ×1