Я столкнулся с проблемой распознавания речи Google из-за длинного аудиофайла ... поэтому я решил разделить свой аудиофайл на 15 секунд ... каждый раз, когда я отправляю первые 15 секунд на распознавание речи, затем вторые 15 секунд и так далее ...
но теперь, когда я использую pydub lib, он разделяет аудиофайл, возвращаемое значение после разделения не является расширением файла, поскольку API требуется расширение файла в качестве параметра (я отметил ошибку), он говорит, что данный аудиофайл должен быть строкой имени файла или файлом. как объект
import speech_recognition as sr
import numpy
from os import path
AUDIO_FILE = "OAF_back_happy.wav"
from pydub import AudioSegment
sound = AudioSegment.from_wav("OAF_back_happy.wav")
halfway_point = len(sound) // 2
split = []
split.append(sound[:halfway_point])
split.append(sound[halfway_point:])
r = sr.Recognizer()
words=1
for x in split:
with sr.AudioFile(x) as source: #<-----
audio = r.record(source) # read the entire audio file
try:
# for testing purposes, we're just using the default API key
# to use another API key, use `r.recognize_google(audio, key="GOOGLE_SPEECH_RECOGNITION_API_KEY")`
# instead of `r.recognize_google(audio)`
ans = r.recognize_google(audio)
print("Google Speech Recognition thinks you said " +ans)
for x in ans:
if (x.isspace()) == True:
words+=1
print(words)
except sr.UnknownValueError:
print("Google Speech Recognition could not understand audio")
except sr.RequestError as e:
print("Could not request results from Google Speech Recognition service; {0}".format(e))
Отредактировано: как описано в комментарии, я не хочу экспортировать файлы, потому что я использую сервер, и я не хочу помещать один и тот же файл дважды
x.export(...)
, чтобы сохранить каждый фрагмент в файл, который затем можно передатьsr.AudioFile(...)
. Например,x.export("slice.wav", format="wav")
, затемwith sr.AudioFile("slice.wav") as source:
- person Justin Ezequiel   schedule 17.03.2021with sr.AudioFile(io.BytesIO(x)) as source:
? если да, это дает мне эту ошибку, требуется байтовый объект, а не список, если нет, когда вы свободны, не могли бы вы ввести его, введите его как код, чтобы я мог понять больше, я ценю вашу помощь - person Zeyad Alaa Eldin   schedule 18.03.2021