Ffmpeg 如何使用谷歌&x27;s云语音到文本REST API转录视频

Ffmpeg 如何使用谷歌&x27;s云语音到文本REST API转录视频,ffmpeg,speech-recognition,video-processing,speech-to-text,google-speech-api,Ffmpeg,Speech Recognition,Video Processing,Speech To Text,Google Speech Api,我希望有两个人在视频中发言的记录,但是我从云语音到文本API得到了一个空的响应 方法: 我有一个56分钟的视频文件,里面有两个人的对话。我想要那次对话的记录,我想用谷歌的云语音到文本API来获取 为了节省一点谷歌云存储空间,我首先使用mmpeg将视频转换为音频 首先,我尝试使用下面的命令找出音频编解码器,它看起来像AAC。 ffmpeg-i video.mp4 Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'videoplayback.mp4': Metad

我希望有两个人在视频中发言的记录,但是我从云语音到文本API得到了一个空的响应

方法:

我有一个56分钟的视频文件,里面有两个人的对话。我想要那次对话的记录,我想用谷歌的云语音到文本API来获取

为了节省一点谷歌云存储空间,我首先使用
mmpeg
将视频转换为音频

首先,我尝试使用下面的命令找出音频编解码器,它看起来像AAC。
ffmpeg-i video.mp4

Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'videoplayback.mp4':
  Metadata:
    major_brand     : mp42
    minor_version   : 0
    compatible_brands: isommp42
    creation_time   : 2015-12-30T08:17:14.000000Z
  Duration: 00:56:03.99, start: 0.000000, bitrate: 362 kb/s
    Stream #0:0(und): Video: h264 (Constrained Baseline) (avc1 / 0x31637661), yuv420p, 490x360 [SAR 1:1 DAR 49:36], 264 kb/s,     29.97 fps, 29.97 tbr, 30k tbn, 59.94 tbc (default)
    Metadata:
      handler_name    : VideoHandler
    Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 96 kb/s (default)
    Metadata:
      creation_time   : 2015-12-30T08:17:31.000000Z
      handler_name    : IsoMedia File Produced by Google, 5-11-2011    
所以我用:
ffmpeg-i video.mp4-vn-acodec copy myaudio.aac

到目前为止的详细信息:
ffmpeg-i myaudio.aac

产出:

之后,我将其转换为opus,因为有人告诉我opus更好
ffmpeg-i myaudio.aac-acodec libopus-b:a 97k-vbr on-compression_level 10 myaudio.opus

到目前为止的信息:
opusinfo myaudio.opus

User comments section follows...
    encoder=Lavc58.18.100 libopus
Opus stream 1:
    Pre-skip: 312
    Playback gain: 0 dB
    Channels: 2
    Original sample rate: 48000Hz
    Packet duration:   20.0ms (max),   20.0ms (avg),   20.0ms (min)
    Page duration:   1000.0ms (max), 1000.0ms (avg), 1000.0ms (min)
    Total data length: 29956714 bytes (overhead: 0.872%)
    Playback length: 56m:03.990s
    Average bitrate: 71.24 kb/s, w/o overhead: 70.62 kb/s
在这一点上,我上传了
myaudio.opus
到谷歌云存储

卷发杆1
我用
curl
写了一篇文章,开始了语音识别:

curl --request POST  --header "Content-Type: application/json" --url 'https://speech.googleapis.com/v1/speech:longrunningrecognize?fields=done%2Cerror%2Cmetadata%2Cname%2Cresponse&key={MY_API_KEY}' --data '{"audio": {"uri": "gs://{MY_BUCKET}/myaudio.opus"},"config": {"encoding": "OGG_OPUS", "sampleRateHertz": 48000, "languageCode": "en-US"}}'
响应:
{“name”:“123456789”}
123456789不是实际值

卷曲获得1
现在我想知道结果:

curl --request GET --url 'https://speech.googleapis.com/v1/operations/123456789?fields=done%2Cerror%2Cmetadata%2Cname%2Cresponse&key={MY_API_KEY}'
这给了我一个错误:
错误:无法识别语音,可能是编码或通道配置错误。请更正配置并重试请求。

因此,我将编码配置从
OGG_OPUS
更新为
LINEAR16

卷发杆2
我又问了一遍:

curl --request POST  --header "Content-Type: application/json" --url 'https://speech.googleapis.com/v1/speech:longrunningrecognize?fields=done%2Cerror%2Cmetadata%2Cname%2Cresponse&key={MY_API_KEY}' --data '{"audio": {"uri": "gs://{MY_BUCKET}/myaudio.opus"},"config": {"encoding": "LINEAR16", "sampleRateHertz": 48000, "languageCode": "en-US"}}'
响应:
{“name”:“987654321”}

卷曲获得2

curl --request GET --url 'https://speech.googleapis.com/v1/operations/987654321?fields=done%2Cerror%2Cmetadata%2Cname%2Cresponse&key={MY_API_KEY}'
答复:

{
  "name": "987654321",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.speech.v1.LongRunningRecognizeMetadata",
    "progressPercent": 100,
    "startTime": "2018-06-08T11:01:24.596504Z",
    "lastUpdateTime": "2018-06-08T11:01:51.825882Z"
  },
  "done": true
}
问题是我没有得到真正的抄本。根据文档,在包含数据的响应中应该有一个
响应

因为我有点被困在这里,我想知道我是否做错了什么。我没有任何技术或资源的限制,所以所有的建议都是非常欢迎的!也很高兴改变我的方法

提前谢谢!干杯

目前只支持WAV和FLAC。 在本地使用
gcloud
命令,我获得了成功:

gcloud ml speech recognize-long-running gs://bucket-name/file.flac  --language-code en-US --include-word-time-offsets > my_transcription.json
使用本地文件时出现字节限制错误

gcloud ml speech recognize-long-running gs://bucket-name/file.flac  --language-code en-US --include-word-time-offsets > my_transcription.json