Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 谷歌云语音到文本不为OGG&;提供输出;MP3文件_Python_Google Cloud Platform_Ffmpeg_Google Speech Api_Google Cloud Speech - Fatal编程技术网

Python 谷歌云语音到文本不为OGG&;提供输出;MP3文件

Python 谷歌云语音到文本不为OGG&;提供输出;MP3文件,python,google-cloud-platform,ffmpeg,google-speech-api,google-cloud-speech,Python,Google Cloud Platform,Ffmpeg,Google Speech Api,Google Cloud Speech,我试图在一堆超过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文件上运行了speech-to-text服务,它似乎可以工作,我得到了预期的文本。但由于某些原因,

我试图在一堆超过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文件上运行了speech-to-text服务,它似乎可以工作,我得到了预期的文本。但由于某些原因,当我使用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的配置中注释出编码设置)格式时,它不会给出响应,只是打印一个换行符并完成

我能做些什么来解决这个问题?

使用Opus或FLAC
  • Vorbis(OGG容器的默认音频格式)不受支持。看
  • MP3编码是测试版功能,仅在v1p1beta1中可用。有关详细信息,请参阅
FLAC FLAC是压缩的,但是无损的。这将产生最佳的语音文本转换结果

ffmpeg-i input.wav-vn output.flac
作品 如果文件空间非常重要,那么在OGG中使用Opus。它可以制作小文件大小和卓越的质量

ffmpeg-i input.wav-vn-c:libopus output.ogg

1.)能否运行
ffmpeg-i audio.ogg
并检查编码是否为Vorbis?如果是Vorbis而不是Opus,ffmpeg没有正确地将其编码到.ogg。您可以尝试使用进行转换。2.)您是否正在使用
speech_v1p1beta1
运行识别?不确定我正在运行的语音版本。是的,它是VORBIS1。您可以在脚本中检查导入方式(
来自google.cloud import speech_v1p1beta1 as speech
),如果您导入v1p1beta1,它应该支持MP3。如果没有,它将不支持MP3。