【发布时间】:2021-07-19 07:18:16
【问题描述】:
我正在尝试对超过 10 分钟的一堆音频文件执行语音到文本。我不想通过直接上传 wav 文件来浪费云存储桶上的存储空间。所以我使用ffmpeg 将文件转换为ogg 或mp3,例如:
ffmpeg -y -i audio.wav -ar 12000 -r 16000 audio.mp3
ffmpeg -y -i audio.wav -ar 12000 -r 16000 audio.ogg
出于测试目的,我在一个虚拟 wav 文件上运行了语音到文本服务,它似乎可以工作,我得到了预期的文本。但是由于某种原因,当我使用 ogg 或 mp3 文件时,它没有检测到任何语音。我也无法让 amr 文件工作。
我的代码:
def transcribe_gcs(gcs_uri):
client = speech.SpeechClient()
audio = speech.RecognitionAudio(uri=gcs_uri)
config = speech.RecognitionConfig(
encoding="OGG_OPUS", #replace with "LINEAR16" for wav, "OGG_OPUS" for ogg, "AMR" for amr
sample_rate_hertz=16000,
language_code="en-US",
)
print("starting operation")
operation = client.long_running_recognize(config=config, audio=audio)
response = operation.result()
print(response)
我已经正确设置了身份验证,所以这不是问题。
当我在同一音频上运行语音到文本服务但以 ogg 或 mp3(我只是从 mp3 的配置中注释掉编码设置)格式时,它没有给出任何响应,只是打印出一个换行符并完成。
我能做些什么来解决这个问题?
【问题讨论】:
-
1.) 你能运行
ffmpeg -i audio.ogg并检查编码是否为Vorbis吗?如果它是 Vorbis 而不是 Opus,则 ffmpeg 没有正确地将其编码为 .ogg。您可以尝试使用opus tools 进行转换。 2.) 您是否使用speech_v1p1beta1运行识别? -
不确定我运行的是什么版本的语音。是的,它是 vorbis
-
如果您导入了 v1p1beta1,您可以在脚本 (
from google.cloud import speech_v1p1beta1 as speech) 中检查您的导入方式,它应该支持 MP3。如果不是,它将不支持 MP3。
标签: python google-cloud-platform ffmpeg google-speech-api google-cloud-speech