标签: wav

Java - 组合 2 个以上 .wav 文件时出现问题

对于我正在进行的项目,我希望能够连接多个 .wav 文件。

通过我的研究,我能够想出这段代码:

File sample1 = new File("F:\\Programming\\Resources\\Java_Sound\\trumpet1.wav");
File sample2 = new File("F:\\Programming\\Resources\\Java_Sound\\trumpet2.wav");

File fileOut = new File("F:\\Programming\\Resources\\Java_Sound\\Test.wav");

AudioInputStream audio1 = AudioSystem.getAudioInputStream(sample1);
AudioInputStream audio2 = AudioSystem.getAudioInputStream(sample2);

AudioInputStream audioBuild = new AudioInputStream(new SequenceInputStream(audio1, audio2), audio1.getFormat(), audio1.getFrameLength() + audio2.getFrameLength());

//for(int i = 0; i < 5; i++){
//    audioBuild = new AudioInputStream(new SequenceInputStream(audioBuild, audio2), audioBuild.getFormat(), audioBuild.getFrameLength() + audio2.getFrameLength());
//}

AudioSystem.write(audioBuild, AudioFileFormat.Type.WAVE, fileOut);
Run Code Online (Sandbox Code Playgroud)

它可以很好地组合两个 .wav 文件,但是当我取消注释 for 循环时,生成的 .wav 文件仅播放第一个串联的音频。音轨似乎提前结束,因为 wmp 的持续时间条仅在屏幕上移动了大约 1\5。

我假设问题出在创建的 .wav 文件中的标头。我研究了许多不同的网页,讨论如何构建标头,但它们的定义都略有不同,但都说标头应该是十六进制的。当转换流(不是音频流,标准 FileInputStream)时,我的标头是十进制的。另外,在 RIFF 部分之后、WAVE 部分之前,应该是整个文件的大小,不包括前 8 个字节。然而我的一些包含连字符。老实说我不知道​​这些是什么意思。然而,忽略它们,取消上面代码的注释后测试文件的大小仍然是一个更大的数字。 …

java audio stream wav wave

2
推荐指数
1
解决办法
3351
查看次数

将 wav 文件传递​​给 IPython.display 时出错

我是 Python 的新手,但我正在研究它作为 DSP 的编程语言。我录制了一个 wav 文件,并一直尝试使用IPython.display.Audio以下方法播放它:

import IPython.display
from scipy.io import wavfile

rate, s = wavfile.read('h.wav')
IPython.display.Audio(s, rate=rate)
Run Code Online (Sandbox Code Playgroud)

但这会产生以下错误:

struct.error: ushort 格式需要 0 <= number <= 0xffff

错误信息

我尝试安装 FFmpeg,但没有帮助。

python wav scipy jupyter-notebook

2
推荐指数
1
解决办法
995
查看次数

ffmpeg 扬声器爆裂音效

我想知道如何使用 ffmpeg 来实现声音被完全破坏的扬声器效果。

我在 ffmpeg 上尝试了一堆不同命令的组合,我得到的最接近的是以下(我使用超级均衡器,然后使音量超高):

import ffmpeg
(
    ffmpeg
    .input('shark.wav')
    .filter("superequalizer", 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20)
    .filter("volume", 10)
    .output('output_speaker.wav')
    .run()
)
Run Code Online (Sandbox Code Playgroud)

我正在使用 python 包装器,但这是等效的命令行:

ffmpeg -i shark.wav -af "superequalizer=1b=20:2b=20:3b=20:4b=20:5b=20:6b=20:7b=20:8b=20:9b=20:10b=20:11b=20:12b=20:13b=20:14b=20:15b=20:16b=20:17b=20:18b=20,volume=10" output_speaker.wav
Run Code Online (Sandbox Code Playgroud)

上述问题是,它对声音还不是很大的文件(例如录制的音频)没有任何作用,并且大多数时候音频实际上只是最终被削波,然后变得超级柔和。

有人对如何实现这种效果有建议吗?谢谢!

python mp3 ffmpeg wav audio-player

2
推荐指数
1
解决办法
2874
查看次数

如何使用base64编码在html5中添加音频

我有一个字符串,它是 Base64 编码和 wav 格式的音频记录(我有数据链接 - {{vm.record}})。我需要在小部件(用 js + html 编写)中添加音频播放器来向我播放音频

我不明白为什么它不起作用?我必须在 js 中编写才能开始工作吗?我在哪里可以写关于编码的文章?

<div layout = "row">
                    <audio 
                        controls 
                        src={{vm.record}} type="audio/wav; base64" autobuffer="autobuffer" autoplay="autoplay">
                        Your browser does not support the
                        <code>audio</code> element.
                    </audio>
                </div>
Run Code Online (Sandbox Code Playgroud)

我知道这是错误的“type=”audio/wav; base64”但是怎么样?我尝试了这个,但它也不起作用

<audio controls src="data:audio/ogg;base64,T2dnUwACAAAAAAAAAAAfm5nB6slBlZ3Fcha363d5ut7u3ni1rLoPf728l3KcK"/>
Run Code Online (Sandbox Code Playgroud)

html base64 wav html5-audio

2
推荐指数
1
解决办法
6507
查看次数

错误:未知格式:3(尝试读取音频 wav 文件时)

我正在尝试使用下面显示的以下函数来清理和缩减音频采样。我陷入了这个我缺乏理解的错误。有人愿意解释一下并希望帮助我解决这个问题吗?

我可以看到它与 wavio 功能有关,并且无法读取文件。

代码如下:

def envelope(y, rate, threshold):
    mask = []
    y = pd.Series(y).apply(np.abs)
    y_mean = y.rolling(window=int(rate/20),
                       min_periods=1,
                       center=True).max()
    for mean in y_mean:
        if mean > threshold:
            mask.append(True)
        else:
            mask.append(False)
    return mask, y_mean


def downsample_mono(path, sr):
    obj = wavio.read(path)
    wav = obj.data.astype(np.float32, order='F')
    rate = obj.rate
    try:
        tmp = wav.shape[1]
        wav = to_mono(wav.T)
    except:
        pass
    wav = resample(wav, rate, sr)
    wav = wav.astype(np.int16)
    return sr, wav


def save_sample(sample, rate, target_dir, fn, ix):
    fn = fn.split('.wav')[0]
    dst_path = os.path.join(target_dir.split('.')[0], fn+'_{}.wav'.format(str(ix))) …
Run Code Online (Sandbox Code Playgroud)

python audio wav downsampling data-cleaning

2
推荐指数
1
解决办法
3315
查看次数

如何将 Arduino 的模拟输入读数从 sketch 转换为 .WAV

我正在尝试用 arduino 构建一个录音机。现在,该设置有一个麦克风,记录输入并输出到 Arduino uno 的模拟输入。

如何将(时间戳、数据)读数转换为 .WAV?我知道有更多的库可以做到这一点,但我试图了解 .WAV 的结构,并希望能够在 C\C++ 中自己编写脚本。

感谢您的关注!

c++ audio arduino wav recording

2
推荐指数
1
解决办法
3121
查看次数

UnsupportedAudioFileException的解决方法?

我正处于用Java编写小型音乐/节奏游戏的早期阶段(通过Slick框架,它依次使用OpenAL,但这可能与此无关).游戏需要以WAV格式读取(和播放)几个声音文件,但有些文件会抛出[javax.sound.sampled.UnsupportedAudioFileException]异常.

at javax.sound.sampled.AudioSystem.getAudioInputStream(AudioSystem.java:1102)
at org.newdawn.slick.openal.WaveData.create(WaveData.java:123)
at org.newdawn.slick.openal.SoundStore.getWAV(SoundStore.java:713)
at org.newdawn.slick.openal.SoundStore.getWAV(SoundStore.java:683)
at org.newdawn.slick.Sound.<init>(Sound.java:33)
Run Code Online (Sandbox Code Playgroud)

这些文件可以在Winamp或Foobar2000中播放得很好,所以这意味着Java只是不识别文件格式的某些变体.此时我有什么选择?

注意:有问题的文件是用户提供的,所以我不能事先转换它们(使用像audacity这样的东西).任何转换步骤都必须在运行时完成.

java audio openal wav

1
推荐指数
1
解决办法
2895
查看次数

如何玩Wav文件

下面是我的代码我无法播放SnareHitSample.wav文件.我不知道我哪里出错了.

-(void)playAudioFiles
{
    NSString * path;
    AVAudioPlayer * snd;
    NSError * err;
    NSString *name;
    name = @"SnareHitSample.wav";
    path = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:name];

    if ([[NSFileManager defaultManager] fileExistsAtPath:path]) {
        NSURL * url = [NSURL fileURLWithPath:path];
        snd = [[AVAudioPlayer alloc] initWithContentsOfURL:url
                                                      error:&err] ;
        if (! snd) {
            NSLog(@"Sound named '%@' had error %@", name, [err localizedDescription]);
        } else {
            [snd prepareToPlay];
        }
    } else {
        NSLog(@"Sound file '%@' doesn't exist at '%@'", name, path);
    }
}
Run Code Online (Sandbox Code Playgroud)

wav avaudioplayer ios

1
推荐指数
2
解决办法
1万
查看次数

QDataStream有时使用32位浮点数,有时使用40位浮点数

我正在编写一个应用程序,它应该将一个浮点数组写入WAVE文件.我正在使用QDataStream,但这导致输出非常不可能,我无法解释.看起来QDataStream有时会选择32位浮点数,有时候会选择40位浮点数.这会弄乱整个输出文件,因为它必须遵守严格的格式.

我的代码大致如下所示:

float* array;
unsigned int nSamples;

void saveWAV(const QString& fileName) const 
{
    QFile outFile(fileName);
    if (outFile.open(QIODevice::WriteOnly | QIODevice::Text)) 
    {
        QDataStream dataStream(&outFile);
        dataStream.setByteOrder(QDataStream::LittleEndian);
        dataStream.setFloatingPointPrecision(QDataStream::SinglePrecision);

        // ... do all the WAV file header stuff ...

        for(int ii = 0; ii < nSamples; ++ii) 
            dataStream << array[ii];
    }
}
Run Code Online (Sandbox Code Playgroud)

我认为没有理由说这个代码会产生这样的副作用.所以我做了一个最小的例子来找出发生了什么.我用这个替换了for循环:

float temp1 = 1.63006e-33f;
float temp2 = 1.55949e-32f;

dataStream << temp1;
dataStream << temp1;
dataStream << temp2;
dataStream << temp1;
dataStream << temp2;
Run Code Online (Sandbox Code Playgroud)

然后我用Matlab打开输出文件,看看写入文件的字节.那些是:

8b 6b 07 09      // this is indeed …
Run Code Online (Sandbox Code Playgroud)

c++ wav qt4.8

1
推荐指数
1
解决办法
414
查看次数

C - 正在播放音乐吗?

我正在用语言C制作一个基于文本的冒险游戏.我正在使用CodeBlocks,游戏将是一个控制台应用程序.

是否有可能在节目中加入"背景音乐"?这将使游戏更加吸引人.

我只知道音乐应该是.wav格式.但我只发现了针对这个问题的C#和C++解决方案(而且C++解决方案是YouTube上的视频质量非常差).

那么,如果有可能在C中,那么有人可以告诉我该怎么做吗?

这将不胜感激!(另外,我希望音乐重播自己,因为它只有2分钟,但我希望它能在程序运行时反复播放).

我在这里先向您的帮助表示感谢!

c console wav playback

1
推荐指数
1
解决办法
645
查看次数