标签: wav

为什么在wav文件头中有0x4e0而不是0x0?

我有一个名为"file.wav"的wav文件,我想用C程序读取该文件的一些规范.我在这里找到了wav文件的结构.根据这个文档,在普通的wav文件中,AudioFormat字节应该是0x1和0x0,或者NumChannels字节应该是(如果是单声道)0x1和0x0; 有很多类似的部分应该看起来像这些.

现在,我的C程序非常简单:我以二进制模式打开文件,我寻找AudioFormat部分(第20个字节),我读取两个字节,然后将它们放入缓冲区; 然后我打印到stdin缓冲区内容.

#include <stdio.h>

main()
{
    void *buf[2];
    FILE *f;
    f=fopen("file.wav", "rb");

    fseek(f, 20, SEEK_SET); 
    fread(buf, 1, 2, f);
    printf("example: %#hx %#hx\n", buf[0], buf[1]);
/*the '#' flag stands for the 0x[···] format output, 
the 'h' says that the number is a short integer (2 bytes).*/


    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我的问题是第二个字节而不是0x0总是0x4e0,这对于每个应该为0的字节(例如对于NumChannels或BitPerSamples字节也是如此).问题是什么?

c binaryfiles wav

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

使用波形比较两个音频文件

可能重复:
比较两个音频文件的波形

我找到了一个PHP函数,它从wav文件生成波形,我修改了它,现在它符合我的需要,它运行良好.

波形对于每个wav文件似乎都是如此独特,所以也许可以使用它们的波形比较两个音频文件,看看b.wav与a.wav有多接近?这根本不是一个好主意吗?

我写了一些php函数来逐个像素地比较两个波形(JPG).经过一些测试我得到以下结果:对于两个不同的音频文件,平均差异是〜97%的结果如预期,但我不知道它将如何在实际代码中工作.

有人可以就这个想法发表意见,也许还有一些有用的提示:)

我想比较两个音频文件,看看b.wav与a.wav有多接近.

PS:我的wav文件几乎相同,唯一的区别就是声音.

php python waveform wav

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

为什么JavaFX不支持.wav格式?

1)JavaFX是否支持.wav格式?(不清楚Oracle的页面)

2)如果不是,为什么呢?

Swing是AWT和JavaFX for Swing的重新放置,我们也说它很容易.wav在Java中播放文件格式,那么为什么 MediaMediaPlayerJavaFX类不支持.wav格式呢?任何问题?

UPDATE

当我尝试播放.wav文件时,它会给我错误

更新2:

SSCCE:

import java.io.File;
import java.io.FilenameFilter;
import java.util.ArrayList;
import java.util.List;
import javafx.application.Platform;
import javafx.beans.value.*;
import javafx.embed.swing.JFXPanel;
import javafx.event.*;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.*;
import javafx.scene.layout.*;
import javafx.scene.media.*;
import javafx.util.Duration;
import javax.swing.*;

 /** Example of playing all mp3 audio files in a given directory 
 * using a JavaFX MediaView launched from Swing 
 */
public class NewFXMain {
private static void initAndShowGUI() {
// …
Run Code Online (Sandbox Code Playgroud)

java format swing javafx wav

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

android - 以编程方式获取AMR音频文件的持续时间

有谁知道如何获得AMR文件的持续时间?真诚地,我不知道很多关于AMR编码的事情.

mRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
Run Code Online (Sandbox Code Playgroud)

我希望在录制停止后获取文件的持续时间而不创建任何MediaPlayer并从中获取持续时间.对于常规的Wav文件,我只需这样做:

fileLength / byteRate
Run Code Online (Sandbox Code Playgroud)

但是对于AMR,我不知道byteRate,我不确定这是否可以,因为WAV是原始PCM数据(未压缩)并且AMR被压缩.

audio android wav amr

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

有人可以解释.wav(WAVE)文件头吗?

好的,因此我正在尝试制作一个可处理.wav文件的程序,并且已经看到了此问题/答案,但是我不确定是标题中的每个数据指的是什么。例如,“块”指的是什么?那是特定数量的位/字节吗?

如果有人能至少以本问题中使用的格式告诉我,除了常量String Literals和“数据”数组之外,每个引用到.wav的数据是什么?特别是,我特别想知道什么是“块”,以及所有通道的采样率,字节率,每个采样的字节和每个采样的字节有何关系?(我怀疑字节速率是采样率*每个采样的字节,但是“针对所有渠道”呢?)

任何帮助表示赞赏。

java audio byte header wav

0
推荐指数
2
解决办法
3283
查看次数

Android 中的 PCM 到 WAV 转换

我使用 AudioRecord 类录制了声音。但它无法通过音乐播放器播放。所以我在音频文件中添加了一些标题信息。虽然它现在可以通过音乐播放器播放,但它滞后且嘈杂,并且无法播放准确的声音。任何帮助,将不胜感激 。我的代码如下

private void rawToWave(final File rawFile, final File waveFile) throws IOException {

    byte[] rawData = new byte[(int) rawFile.length()];
    DataInputStream input = null;
    try {
        input = new DataInputStream(new FileInputStream(rawFile));
        input.read(rawData);
    } finally {
        if (input != null) {
            input.close();
        }
    }

    DataOutputStream output = null;
    try {
        int myBitsPerSample= 2;
        int myFormat = 1;
        long myChannels = 1;
        long mySampleRate = 8000 ;
        long myByteRate = mySampleRate * myChannels * myBitsPerSample/8;
        int myBlockAlign = (int) (myChannels * …
Run Code Online (Sandbox Code Playgroud)

java android wav pcm

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

csv 到 wav python

嗨,我有这个代码,假设将 csv 文件转换为 wav 文件。它创建了一个 wav 文件,但我们什么也没听到。如果我在 csv 文件中放入 10 行,它会生成一个大约 1 分钟的 wav 文件!所以根本不成正比。

我的 csv 看起来像:

0.000785,0.30886552
0.00157,0.587527526
0.002355,0.808736061
0.00314,0.950859461
0.003925,0.999999683
0.00471,0.951351376
0.005495,0.809671788
0.00628,0.588815562
0.007065,0.31037991
0.00785,0.001592653
0.008635,-0.307350347
0.00942,-0.586237999
0.010205,-0.807798281
0.01099,-0.950365133
0.011775,-0.999997146
0.01256,-0.951840879
0.013345,-0.810605462
0.01413,-0.590102105
0.014915,-0.311893512
0.0157,-0.003185302
0.016485,0.305834394
0.01727,0.584946986
0.018055,0.806858453
0.01884,0.949868395
0.019625,0.999992073
0.02041,0.952327967
0.021195,0.81153708
0.02198,0.591387151
0.022765,0.313406323
Run Code Online (Sandbox Code Playgroud)

和这里的代码:

#!/usr/bin/python

import wave
import numpy
import struct
import sys
import csv
import resampy

def write_wav(data, filename, framerate, amplitude):
    wavfile = wave.open(filename, "w")
    nchannels = 1
    sampwidth = 2
    framerate = framerate
    nframes …
Run Code Online (Sandbox Code Playgroud)

python csv wav

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

将mp4声音转换为python中的文本

我想将Facebook Messenger的录音转换为文本.以下是使用Facebook的API发送.mp4文件的示例:https://cdn.fbsbx.com/v/t59.3654-21/15720510_10211855778255994_5430581267814940672_n.mp4/audioclip-1484407992000-3392.mp4?oh=a78286aa96c9dea29e5d07854194801c&oe =587C3833

所以这个文件只包含音频(不是视频),我想将其转换为文本.

此外,我想尽快做到这一点,因为我将在几乎实时的应用程序中使用生成的文本(即用户发送.mp4文件,脚本将其转换为文本并显示回来).

我找到了这个例子https://github.com/Uberi/speech_recognition/blob/master/examples/audio_transcribe.py ,这里是我使用的代码:

import requests
import speech_recognition as sr

url = 'https://cdn.fbsbx.com/v/t59.3654-21/15720510_10211855778255994_5430581267814940672_n.mp4/audioclip-1484407992000-3392.mp4?oh=a78286aa96c9dea29e5d07854194801c&oe=587C3833'
r = requests.get(url)

with open("test.mp4", "wb") as handle:
    for data in r.iter_content():
        handle.write(data)

r = sr.Recognizer()
with sr.AudioFile('test.mp4') as source:
    audio = r.record(source)

command = r.recognize_google(audio)
print command
Run Code Online (Sandbox Code Playgroud)

但是我收到了这个错误:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Users\Asterios\Anaconda2\lib\site-packages\speech_recognition\__init__.py", line 200, in __enter__
    self.audio_reader = aifc.open(aiff_file, "rb")
  File "C:\Users\Asterios\Anaconda2\lib\aifc.py", line 952, in open
    return Aifc_read(f)
  File "C:\Users\Asterios\Anaconda2\lib\aifc.py", line …
Run Code Online (Sandbox Code Playgroud)

python audio mp4 wav

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

java中如何计算音频信号的分贝并录制音频?

public TargetDataLine targetDataLine;
private static AudioFormat getAudioFormat() 
{
        return new AudioFormat(16000, 16, 2, true, false);
}
AudioFormat a = getAudioFormat();
DataLine.Info info = new DataLine.Info(TargetDataLine.class, a);
targetDataLine = (TargetDataLine) AudioSystem.getLine(info);
targetDataLine.open(a);
targetDataLine.start();
AudioInputStream ais = new AudioInputStream(targetDataLine); 
AudioSystem.write(ais, AudioFileFormat.Type.WAVE, new File("record.wav"));
Run Code Online (Sandbox Code Playgroud)
  1. 如何同时计算音频的分贝数?
  2. 如何计算现有 wav 文件的分贝?

java audio wav decibel audioformat

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

librosa ParameterError:音频缓冲区并非处处有限(切割 wav 文件)

我正在训练一个名为 DeWave ( https://github.com/chaodengusc/DeWave )的 Python 音频源分离模型包。它在单通道 .wav 文件上进行了训练。训练模型后,我对 .wav 样本进行了推理(以分离单声道音频测试文件中的两个扬声器源)。这工作正常,除非我剪切 .wav 文件,在这种情况下,我从 librosa 收到一个错误,指出音频缓冲区在任何地方都不是有限的。

我尝试对不同的音频文件进行推理,只有在使用外部软件剪切 .wav 文件时才会出现错误(我尝试使用 sox 和 Zamzar 进行剪切)。我成功推断的音频文件具有所有不同的长度,并且不是给定长度的倍数,所以我不认为这是长度问题。我想知道文件切割是否会擦除缓冲区,但我一般不熟悉缓冲区,因此对于如何解决此问题的任何见解都将不胜感激。

用 librosa 编写的主要代码是来自https://github.com/chaodengusc/DeWave/blob/master/DeWave/infer.py 的这些行

## restore the original audio
len1 = len(out_audio1) // 3
len2 = len(out_audio2) // 3
source1 = out_audio1[len1:2*len1]
source2 = out_audio2[len2:2*len2]
librosa.output.write_wav(input_file[0:-4]+"_source1.wav", source1, SAMPLING_RATE)
librosa.output.write_wav(input_file[0:-4]+"_source2.wav", source2, SAMPLING_RATE)
return [(source1, SAMPLING_RATE), (source2, SAMPLING_RATE)]
Run Code Online (Sandbox Code Playgroud)

预期的输出将是两个长度相同的独立 .wav 文件,每个文件中有一个扬声器,另一个扬声器正在说话时静音。但是,我收到此错误:

Traceback (most recent call last):
  File "/home/<me>/anaconda3/bin/dewave-infer", line 11, in <module>
    sys.exit(infer())
  File "/home/<me>/anaconda3/lib/python3.6/site-packages/DeWave/cmdinfer.py", line …
Run Code Online (Sandbox Code Playgroud)

python wav librosa

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

如何正确地将 uint8* 复制到 vector&lt;Uint8&gt;

我正在尝试从 Uint8* 制作 Uint8 向量,但由于某些原因某些值不相同。这是我的代码。

std::vector<Uint8> wav_vector = {}; 
Uint8* wav_buffer_;   
for (unsigned int i = 0; i < wav_length_; i++) {
  wav_vector.push_back(wav_buffer_[i]);
}
Run Code Online (Sandbox Code Playgroud)

然后我尝试验证这些值:

for (unsigned int i = 0; i < wav_length_; i++){
    if (wav_buffer_[i]!=wav_vector[i]){
      cout<<i<<endl;
      printf("Orignal Buffer %u\n", wav_buffer_[i]);
      printf("Vector Buffer %u\n", wav_vector[i]);

    }
  }
Run Code Online (Sandbox Code Playgroud)

这些是我的示例输出:

Index: 0
Orignal Buffer 208
Vector Buffer 40

Index: 1
Orignal Buffer 72
Vector Buffer 3

Index: 2
Orignal Buffer 111
Vector Buffer 183

Index: 3
Orignal Buffer 1
Vector Buffer …
Run Code Online (Sandbox Code Playgroud)

c++ sdl wav uint uint8t

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

为什么这个ArrayList不适用于Wave文件?(Java)的

我正在尝试创建代码以将wav文件放入数组列表,然后让arraylist播放文件.为什么这段代码不起作用?谢谢.

public class trackList {

    public void tracklist(){

        ArrayList<String> songs = new ArrayList();
        songs.add("c:\\01.wav");
        songs.add("c:\\02.wav");

        byte[] buffer = new byte[4096];
        for(int x = 0; x < songs.size(); x++){

          try{

                AudioInputStream ais = AudioSystem.getAudioInputStream(songs(x));
                AudioFormat format = ais.getFormat();
                SourceDataLine line = AudioSystem.getSourceDataLine(format);
                line.open(format);
                line.start();

          while (ais.available() > 0) {

                int len = ais.read(buffer);
                line.write(buffer, 0, len);

               }

            line.drain(); 
            line.close();

                } 
          catch (Exception e) {

                e.printStackTrace();

                }
        }                       
    } 
}
Run Code Online (Sandbox Code Playgroud)

java arraylist wav

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

标签 统计

wav ×12

java ×5

audio ×4

python ×4

android ×2

amr ×1

arraylist ×1

audioformat ×1

binaryfiles ×1

byte ×1

c ×1

c++ ×1

csv ×1

decibel ×1

format ×1

header ×1

javafx ×1

librosa ×1

mp4 ×1

pcm ×1

php ×1

sdl ×1

swing ×1

uint ×1

uint8t ×1

waveform ×1