小编Phy*_*hys的帖子

Python,speech_recognition 工具无法识别 .wav 文件

我生成了一个 .wav 音频文件,其中包含一些语音和背景中的其他干扰语音。此代码适用于我的测试 .wav 文件:

    import speech_recognition as sr

    r = sr.Recognizer()
    with sr.WavFile(wav_path) as source:
        audio = r.record(source)

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

如果我使用我的 .wav 文件,我会收到以下错误:

ValueError:无法将音频文件读取为 PCM WAV、AIFF/AIFF-C 或 Native FLAC;检查文件是否损坏或其他格式

如果我用声音文件保存这个 .wav 文件,情况会略有改善:

    import soundfile as sf        

    wav, samplerate = sf.read(wav_path)
    sf.write(saved_wav_path, original_wav, fs)
Run Code Online (Sandbox Code Playgroud)

然后将新的 saved_wav_path 加载回第一个代码块,这次我得到:

如果不是 isinstance(actual_result, dict) 或 len(actual_result.get("alternative", [])) == 0: raise UnknownValueError()

音频文件被保存为

    wavfile.write(wav_path, fs, data)
Run Code Online (Sandbox Code Playgroud)

其中 wav_path = 'data.wav'。有任何想法吗?

解决方案:

以下列方式保存音频数据会生成正确的 .wav 文件:

    import wavio
    wavio.write(wav_path, data, fs ,sampwidth=2)
Run Code Online (Sandbox Code Playgroud)

python speech-recognition google-api

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

Python - ValueError:输入向量x的长度必须大于padlen,即6

我在Python中使用函数filtfilt,如下所示

import numpy as np
from scipy.signal import filtfilt

a = np.array([1, -lambd]).T
b = np.array([-lambd,1]).T
delayed = filtfilt(b,a,sig)
Run Code Online (Sandbox Code Playgroud)

其中 sig 的形状为 (6,)。结果,我收到以下错误:

ValueError:输入向量x的长度必须大于padlen,即6。

由 scipy.signal 生成。

如果 sig 的形状为 (7,) 或更长,则相同的代码可以正常工作,而对于任何小于 (6,) 的形状,它会返回相同的错误。任何想法?

python filter scipy

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

标签 统计

python ×2

filter ×1

google-api ×1

scipy ×1

speech-recognition ×1