Wave error file does not start with riff id

When running the first 14 lines of audio_transcribe.py, I receive the error below. What do I need to do to fix this? /usr/local/Cellar/python3/3.4.2_1/Frameworks/Python.framework/Versions/3.4/bin/p...

When running the first 14 lines of audio_transcribe.py, I receive the error below. What do I need to do to fix this?

/usr/local/Cellar/python3/3.4.2_1/Frameworks/Python.framework/Versions/3.4/bin/python3.4 /Users/adamg/te/Polli/ASR/SpeechRecognitionTest0.py
Traceback (most recent call last):
  File "/usr/local/Cellar/python3/3.4.2_1/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/speech_recognition/__init__.py", line 174, in __enter__
    self.audio_reader = wave.open(self.filename_or_fileobject, "rb")
  File "/usr/local/Cellar/python3/3.4.2_1/Frameworks/Python.framework/Versions/3.4/lib/python3.4/wave.py", line 497, in open
    return Wave_read(f)
  File "/usr/local/Cellar/python3/3.4.2_1/Frameworks/Python.framework/Versions/3.4/lib/python3.4/wave.py", line 163, in __init__
    self.initfp(f)
  File "/usr/local/Cellar/python3/3.4.2_1/Frameworks/Python.framework/Versions/3.4/lib/python3.4/wave.py", line 130, in initfp
    raise Error('file does not start with RIFF id')
wave.Error: file does not start with RIFF id

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/local/Cellar/python3/3.4.2_1/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/speech_recognition/__init__.py", line 179, in __enter__
    self.audio_reader = aifc.open(self.filename_or_fileobject, "rb")
  File "/usr/local/Cellar/python3/3.4.2_1/Frameworks/Python.framework/Versions/3.4/lib/python3.4/aifc.py", line 887, in open
    return Aifc_read(f)
  File "/usr/local/Cellar/python3/3.4.2_1/Frameworks/Python.framework/Versions/3.4/lib/python3.4/aifc.py", line 340, in __init__
    self.initfp(f)
  File "/usr/local/Cellar/python3/3.4.2_1/Frameworks/Python.framework/Versions/3.4/lib/python3.4/aifc.py", line 305, in initfp
    raise Error('file does not start with FORM id')
aifc.Error: file does not start with FORM id

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/Users/adamg/te/Polli/ASR/SpeechRecognitionTest0.py", line 13, in <module>
    with sr.AudioFile(AUDIO_FILE) as source:
  File "/usr/local/Cellar/python3/3.4.2_1/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/speech_recognition/__init__.py", line 199, in __enter__
    self.audio_reader = aifc.open(aiff_file, "rb")
  File "/usr/local/Cellar/python3/3.4.2_1/Frameworks/Python.framework/Versions/3.4/lib/python3.4/aifc.py", line 887, in open
    return Aifc_read(f)
  File "/usr/local/Cellar/python3/3.4.2_1/Frameworks/Python.framework/Versions/3.4/lib/python3.4/aifc.py", line 340, in __init__
    self.initfp(f)
  File "/usr/local/Cellar/python3/3.4.2_1/Frameworks/Python.framework/Versions/3.4/lib/python3.4/aifc.py", line 303, in initfp
    chunk = Chunk(file)
  File "/usr/local/Cellar/python3/3.4.2_1/Frameworks/Python.framework/Versions/3.4/lib/python3.4/chunk.py", line 63, in __init__
    raise EOFError
EOFError

Process finished with exit code 1

Я пытаюсь преобразовать mp3-файл в текст, но мой код возвращает ошибку, описанную ниже. Любая помощь приветствуется!

Это образец mp3-файла. И вот что я пробовал:

import speech_recognition as sr
print(sr.__version__)
r = sr.Recognizer()

file_audio = sr.AudioFile(r"C:UsersAndrewPodcast.mp3")

with file_audio as source:
    audio_text = r.record(source)

print(type(audio_text))
print(r.recognize_google(audio_text))

Я получаю полную ошибку. По-видимому:

Error: file does not start with RIFF id

Спасибо за помощь!

2 ответа

Лучший ответ

Вам нужно сначала преобразовать mp3 в wav, а затем вы можете его расшифровать, ниже — измененная версия вашего кода.

import speech_recognition as sr
from pydub import AudioSegment

# convert mp3 file to wav  
src=(r"C:UsersAndrewPodcast.mp3")
sound = AudioSegment.from_mp3(src)
sound.export("C:UsersAndrewpodcast.wav", format="wav")

file_audio = sr.AudioFile(r"C:UsersAndrewPodcast.wav")

# use the audio file as the audio source                                        
r = sr.Recognizer()
with file_audio as source:
audio_text = r.record(source)

print(type(audio_text))
print(r.recognize_google(audio_text))

В приведенном выше модифицированном коде сначала конвертируется mp3-файл в wav, а затем выполняется расшифровка.


1

Meghshyam Sonar
2 Янв 2021 в 02:10

Единственное, что вы можете сделать, — это преобразовать ваш mp3 в wav. При тестировании с mp3 файлом у меня такая же ошибка, как и у вас. Но после преобразования ваш код работает нормально. Можно было бы также написать свой код, чтобы вы могли использовать mp3, но на этом мои знания заканчиваются.

Может быть, кто-то другой знает больше, чем я мог бы опубликовать. Но если вы просто хотите протестировать, вы можете использовать что-то вроде смелости, чтобы преобразовать его.

Также у вас могут возникнуть проблемы, если вы перейдете с большими файлами, прочтите что-нибудь об этом в Интернете. Но тебе ничто не мешает.

Вот сайт для этого:

https://www.geeksforgeeks.org/python-speech-recognition-on-large-audio-files/


1

Andreas B
2 Янв 2021 в 01:51

wave.Error: file does not start with RIFF id and error.
In views.py

from mfcc import *
import numpy as np
import os
if __name__ == "__main__":
        train_label = np.array ([])
        test_label = np.array ([])
        nfft = 2048
        nceps = 12
        train_data = np.empty ((0, 12), float)
        test_data = np.empty ((0, 12), float)
        directory = os.listdir ('/ sound_app/sounds')
        for file_name in directory:
            feature = get_feature (file_name, nfft, nceps)
            if len (train_data) == 0:
                train_data = feature
            else:
                train_data = np.vstack ((train_data, feature))
                train_label = np.append (train_label)

            test_label = np.append (test_label, file_name)

And write to mfcc.py

import wave
import numpy as np
import scipy.signal
import scipy.fftpack
import scipy.fftpack.realtransforms
from pylab import *
def get_feature (wavfile, nfft, nceps):
    wav, fs = wavread (wavfile)
    t = np.arange (0.0, len (wav)/fs, 1/fs)
    center = len (wav)/2
    cuttime = 0.8
    global wavdata
    wavdata = wav [int (center-cuttime/2 * fs): int (center + cuttime/2 * fs)]
    global time
    time = t [int (center-cuttime/2 * fs): int (center + cuttime/2 * fs)]
    ceps = mfcc (wavdata, nfft, fs, nceps)
    return ceps.tolist ()

I wrote.
/ sound_app/sounds contains a lot of wav files, and when you type a command to check if these wav files are really wav files

RIFF (little-endian) data, WAVE audio, Microsoft PCM, 16 bit, stereo 44100 Hz

I came back and confirmed that it was a wav file. Why do I get this error? How do I fix the error?

for Traceback

Traceback (most recent call last):
  File "sound.py", line 24, in&lt;module&gt;
    feature = get_feature (file_name, nfft, nceps)
  File "/Users/xxx/sound_recognition/mfcc.py", line 76, in get_feature
    wav, fs = wavread (wavfile)
  File "/Users/xxx/sound_recognition/mfcc.py", line 13, in wavread
    wf = wave.open (filename, "r")
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/wave.py", line 511, in open
    return Wave_read (f)
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/wave.py", line 164, in __init__
    self.initfp (f)
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/wave.py", line 131, in initfp
    raise Error, 'file does not start with RIFF id'
wave.Error: file does not start with RIFF id

I came out.

What you have is a 64-bit RIFF . У вас есть 64-битный RIFF . wave does not support 64-bit RIFF files. wave не поддерживает 64-битные файлы RIFF.

en

If your audio is okay, and you are able to read the file with librosa or scipy.io, we can simply read the file, write it back to a temporary wav file and then read it with the wave package again. Если с вашим звуком все в порядке, и вы можете прочитать файл с помощью librosa или scipy.io, мы можем просто прочитать файл, записать его обратно во временный файл wav, а затем снова прочитать его с помощью пакета волны.

Example. Пример. Below, we get the RIFF id error. Ниже мы получаем ошибку идентификатора RIFF.

>>> import wave
>>> wave.open('./SA1.WAV')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/pytorch/anaconda3/lib/python3.6/wave.py", line 499, in open
    return Wave_read(f)
  File "/home/pytorch/anaconda3/lib/python3.6/wave.py", line 163, in __init__
    self.initfp(f)
  File "/home/pytorch/anaconda3/lib/python3.6/wave.py", line 130, in initfp
    raise Error('file does not start with RIFF id')
wave.Error: file does not start with RIFF id

We read into numpy with librosa, write back with soundfile. Мы читаем в numpy с помощью librosa, записываем обратно с помощью звукового файла.

import librosa
import soundfile as sf
>>> x,_ = librosa.load('./SA1.WAV', sr=16000)
>>> sf.write('tmp.wav', x, 16000)
>>> wave.open('tmp.wav','r')
<wave.Wave_read object at 0x7fbcb4c8cf28>

en

Аналогично ответу @kakrafoon, но с использованием soundfile как для чтения, так и для записи (на случай, если вы заботитесь об ограничении количества внешних зависимостей):

import soundfile
import wave

file_path = "your_file.wav"

# Read and rewrite the file with soundfile
data, samplerate = soundfile.read(file_path)
soundfile.write(file_path, data, samplerate)

# Now try to open the file with wave
with wave.open(file_path) as file:
    print('File opened!')

en

У меня есть слово вокруг, я переименовываю суффикс файла в «mp3» и преобразовываю его в «wav», тогда я смогу его прочитать.

subprocess.call(['ffmpeg', '-i', 'XXX.mp3', 'XXX.wav'])

en

Понравилась статья? Поделить с друзьями:
  • Wave encountered an error while processing your order
  • Wattpad error 404
  • Waterboss 700 ошибка е1
  • Water temp ошибка тойота камри 40
  • Water detected drain fryer как убрать ошибку