我的目标是.wav
在模拟器中使用文件替代麦克风输入.该.wav
文件必须由Android模拟器中的语音记录器识别和处理.
我想通过从.wav
文件中提供语音命令来测试语音记录器,就像应用程序通过麦克风输入接收它们一样.
这可能吗?
我希望能够编写具有32位浮点样本的PCM wav文件.这似乎是一种有效的格式,因为libsndfile声称支持它.
但是,如果我在标题中指定32位的样本大小,则我打开它的任何程序都假定它是32位整数数据.需要在wav文件头中设置哪些标志等来指定浮点数据?
任何人都可以向我指出一些解释如何做到这一点的文档吗?
我需要将flac文件转换为wav文件而不改变采样率和位深度.据我所知,更改这些属性可能会扭曲音频,那么如何指定它们不被更改?
另外,有没有办法阻止元数据写入输出文件?
我正在做一些关于如何比较声音文件(波)的研究.基本上我想比较存储的声音文件(wav)和麦克风的声音.所以最后我想预先存储我自己的一些语音命令,然后当我运行我的应用程序时,我想将预先存储的文件与麦克风的输入进行比较.
我的想法是在比较时加入一些余地,因为我想,以同样的方式连续两次说某些话会很困难.
所以经过一些谷歌搜索,我发现python有这个名为wave的模块和Wave_read对象.该对象有一个名为readframes(n)的函数:
读取并返回最多n帧音频,作为一串字节.
这些字节包含什么?我想通过一帧的波形文件循环比较它们逐帧.
我需要能够将两个或多个.wav文件一起加入到一个.wav文件中.我必须使用C#以编程方式执行此操作(第三方产品不是一个选项).我知道System.Media.SoundPlayer类,但我不打算播放.wav,而只是创建它.
我看过pymedia(已停产),pyglet(很棒,但没有转换器)和audiotools(命令行cd翻录),似乎没有一个合适.
在Python 2.7中,您如何做
convert(wavFileLocation, 'mp3')
Run Code Online (Sandbox Code Playgroud)
如果没有python方式,你会怎么做python可以调用的方式?(例如,调用跨平台命令行工具...如果存在返回(name,pythonCodeForInvocation))
我需要从wav文件中提取单个通道的样本,该文件最多包含12个(11.1格式)通道.我知道在正常的立体声文件中,样本是交错的,先是左边,然后是右边,就像这样,
[1st L] [1st R] [2nd L] [2nd R]...
Run Code Online (Sandbox Code Playgroud)
那么,要阅读左声道,我会这样做,
for (var i = 0; i < myByteArray.Length; i += (bitDepth / 8) * 2)
{
// Get bytes and convert to actual samples.
}
Run Code Online (Sandbox Code Playgroud)
为了获得正确的渠道,我只是这样做for (var i = (bitDepth / 8)...
.
但是,对于超过2个频道的文件,使用了什么顺序?
我在问,因为我无法在任何地方找到答案.我已经成功实现了RecorderJS,以便在JS中记录麦克风输入.但是,录制的文件是WAV,导致大文件.我正在寻找一种方法用JS直接录制到MP3,或者以某种方式将位编码为MP3而不是WAV.
怎么做到呢?是否有可以做到的Web Audio API功能或某种JS MP3编码器?
我发现在样本开始之前假设所有PCM wav音频文件都有44个字节的标题数据是危险的.虽然这很常见,但许多应用程序(例如ffmpeg)将生成带有46字节标头的wav,并忽略此事实,而处理将导致文件损坏且不可读.但是,如何判断标题实际存在多长时间?
显然有一种方法可以做到这一点,但我搜索并发现很少有关于此的讨论.根据作者自己的背景,很多音频项目假设44(或相反,46).
我试图从音频文件(WAV文件)中提取振幅数组.我将使用此振幅数组来绘制给定wav文件的幅度与时间关系图.我能够自己绘制图形,但不知道如何从java中的给定音频(wav)文件中提取幅度?