我需要帮助开始使用 libsndfile。
我有四个 .wav 文件(所有相同的采样率)。
我想把前两个放在一起,然后再把下两个放在一起,
然后将生成的 2 个 .wav 文件混合为一个。
我目前正在与 Asterisk 和 PHP Web 界面进行一些电话集成。我想让用户选择在 wav 文件中上传他们自己的自定义问候语,然后在服务器上将 wav 转换为 8000hz 的 gsm 文件。目前,我正在尝试使用 sox 来完成此操作。
但是,似乎当我在 8khz sav 和 gsm 以外的任何内容之间进行转换时,gsm 文件严重失真。这几乎就像它使文件减慢了 10 倍(wav 格式的 3 秒介绍变成了 30 秒 gsm 文件)我尝试了几种速度和重采样的组合都无济于事。理想情况下,我想获取任何上传的 wav 文件并对其进行转换,而不会让用户承担太多责任来正确编码。我绝对不是发烧友,所以如果有人能指出我正确的方向,我将不胜感激。
是否有将 wav 文件读入 short[] 数组的 api?我正在尝试将 wav 文件读入短数组。
我找不到任何内置的 API
我想在 html 代码上自动播放 wav 文件。我在互联网上找到了这个选项:
不适用于任何浏览器,但据报道可以正常工作:
<object type="audio/x-wav" data="http://www.hydrotoys.com/wavs/Beavis_cornholio.wav" width="320" height="260">
<param name="autostart" value="true" />
<param name="controller" value="true" />
<param name="src" value="http://www.hydrotoys.com/wavs/Beavis_cornholio.wav">
</object>
Run Code Online (Sandbox Code Playgroud)
如果安装了 Windows Media Player,则在 chrome、IE 上工作,对于 Firefox 需要手动安装 wmp 播放器
<embed src="http://www.hydrotoys.com/wavs/Beavis_cornholio.wav" hidden="false" autostart="true" loop="false">
Run Code Online (Sandbox Code Playgroud)
html5 解决方案,在 chrome 上工作,我在 mozilla 网站上得到了这个解决方案,但不适用于 IE。
<audio src="http://www.hydrotoys.com/wavs/Beavis_cornholio.wav" type="audio/x-wav" controls autoplay="autoplay">
<p>Your browser does not support the audio element </p>
<source src="http://www.hydrotoys.com/wavs/Beavis_cornholio.wav"/>
</audio>
Run Code Online (Sandbox Code Playgroud)
我在这个例子中使用了一个固定的 wav,但我使用这个代码在我的 Servlet 上生成我的音频
response.setDateHeader("过期", 0);
response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate");
response.setHeader("Pragma", "no-cache");
response.setContentType("audio/x-wav");
response.setContentLength(byteAudio.length);
有什么帮助吗?
我正在尝试生成声波,它看起来像是soundcloud所具有的声波.
但我无法弄清楚他们如何使他们的声波如此清晰,例如这是soundcloud和我生成的声波的一个例子:

我正在使用php来读取wav文件并生成图像,但是如果在任何语言中有一些更好的库可以做得更好,我肯定想听听它.
我已经贴说我全光照在类引擎收录.
我从andrewfreiday.com获得此代码并修改以适合我的网站.
我真的迷失了,任何建议都会有所帮助.
我正在尝试让一个简单的 C 程序播放 AIFF 或 WAV 文件。根据我在http://www.xiph.org/ao/doc/上看到的内容,这应该可以工作,但是无论我输入什么文件,它都会发出嗡嗡声。这有什么问题?
/* compile with "gcc -o playme playme.c -lao -ldl -lm" */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ao/ao.h>
#include <math.h>
ao_device *device;
ao_sample_format format;
int main(int argc, char *argv[])
{
int default_driver;
char *buffer;
unsigned long count;
FILE *fp;
if (argc != 2) {
printf("usage: %s <filename>\n", argv[0]);
exit(1);
}
ao_initialize();
default_driver = ao_default_driver_id();
memset(&format, 0, sizeof(format));
format.bits = 16;
format.channels = 2;
format.rate = 44100;
format.byte_format = AO_FMT_LITTLE;
device …Run Code Online (Sandbox Code Playgroud) wav 文件的各种标题包含文件长度信息。考虑一下我生成一个 wav 文件而不知道它会持续多长时间并且可能无法在我完成后更改标题的情况(即在写入管道的情况下),我应该在这些字段中写入什么?
多年来,或者至少据我所知,关于是否使用大尾数法还是小尾数法存在很多争论。不过,我想知道你什么时候看到这两个?奇怪的问题,对吧?
在必须解码 WAV 文件时,我注意到标头由不同的段组成,这些段可能是大尾数,也可能是小尾数。 https://ccrma.stanford.edu/courses/422/projects/WaveFormat/
在这里指定的论坛中,它指定了对大部分文件使用小端字节序的原因(Why are an integers bytes向后存储?这仅适用于标头吗?)
“WAV 文件是小端字节序(最低有效字节)首先)因为该格式起源于在基于英特尔处理器的机器上运行的操作系统,这些机器使用小端格式来存储数字。
但是,我还没有找到为什么也使用大端?
提前致谢
我试图用Python上的文件进行声音分析,我有一个高清晰度的声音文件,它非常大(2.39 GB).但是,每当我尝试使用wave模块打开它时,我都会收到以下错误:
wave.Error: unknown format: 65534
Run Code Online (Sandbox Code Playgroud)
我通过将.ts文件转换为.wav文件来获取此文件.我在标准清晰度节目中使用了相同的方法,它工作得很好.我可以使用.做一些分析
data = np.memmap(audioclip,dtype='h',mode='r')
Run Code Online (Sandbox Code Playgroud)
然而,这并没有得到准确的结果,因为它认为当只有一个小时的长度时,音障单是3小时.任何帮助将不胜感激,我有不同的错误代码的类似问题,但是这些对这个问题没有多大帮助.非常感谢!
我正在Squeak的一个小项目上工作并遇到了一个问题:我无法正确解码WAV文件.
这是我目前用于解码它的两种方法:
convert4bitUnsignedTo16Bit: anArray
"Convert the given array of samples--assumed to be 4-bit unsigned, linear data--into 16-bit signed samples. Return an array containing the resulting samples. I only thinking it is unsigned. I don't really know."
| n samples s |
n _ anArray size.
samples _ SoundBuffer newStereoSampleCount: (n * 2).
1 to: n do: [:i |
s _ anArray at: i.
samples at: (i * 2) put: (self imaDecode: s).
samples at: ((i * 2) - 1) put: …Run Code Online (Sandbox Code Playgroud)