Google cloud platform 谷歌云语音到文本返回空结果或错误

Google cloud platform 谷歌云语音到文本返回空结果或错误,google-cloud-platform,google-cloud-speech,Google Cloud Platform,Google Cloud Speech,为了修复google cloud语音到文本api,我们已经努力了4天,但仍然没有看到曙光。在网上搜索了很多,阅读了很多文档,但是没有看到结果 我们的网站是bbsreadio.com,我们正在尝试使用谷歌语音到文本api从我们的mp3文件中自动提取转录本。代码是用PHP编写的,几乎完全是这一版本的副本:https://github.com/GoogleCloudPlatform/php-docs-samples/blob/master/speech/src/transcribe_async.php

为了修复google cloud语音到文本api,我们已经努力了4天,但仍然没有看到曙光。在网上搜索了很多,阅读了很多文档,但是没有看到结果

我们的网站是bbsreadio.com,我们正在尝试使用谷歌语音到文本api从我们的mp3文件中自动提取转录本。代码是用PHP编写的,几乎完全是这一版本的副本:https://github.com/GoogleCloudPlatform/php-docs-samples/blob/master/speech/src/transcribe_async.php 我看到这个过程已经完成了,它在这里显示“
$operation->pollUntilComplete();
”,但它没有显示它在“
if($operation->operationSucceeded()){
”成功,也没有在
$operation->getError()返回任何错误

我正在将mp3转换为原始文件,如下所示:
ffmpeg-y-loglevel panic-I/public_html/sites/default/files/show archives/audio-clips-9-23-2020/911freefall2020-05-24.mp3-f s16le-acodec pcm_s16le-vn-ac 1-ar 16000-map_metadata-1/home/mp3_-to_-raw/911freefall2020-05-24.raw

虽然也尝试使用FLAC格式,但不起作用。我使用windows media player测试了转换后的FLAC文件,我可以清晰地收听对话。我检查了文件的Hz 16000、channel=1和16位。我看到文件上载到云存储中。检查此项:

https://cloud.google.com/speech-to-text/docs/troubleshooting
https://cloud.google.com/speech-to-text/docs/best-practices


有很多讨论和文档,目前似乎没有任何帮助。如果有人真的能帮我找出问题所在,那将非常棒!

TLDR;将MP3转换为单通道FLAC文件,采样率与您的MP3文件相同

详细解释:

由于您使用MP3文件作为流程输入,当您重新采样到16KHz时,MP3压缩工件可能会对您造成伤害(您听不到这一点,但算法会)

为了证实这一理论:

  • 执行
    ffprobe-hide_banner filename.mp3
    它将输出如下内容:
  • 在这种情况下,Google Spech Api的采样率是可以的。只需在不更改采样率的情况下对文件进行转码(从ffmpeg命令中删除-ar 16000)

  • 如果原始MP3比特率很低,您可能会遇到麻烦。320kb/s似乎是安全的(除非录音有很多噪音)

  • 考虑到在64kb/s(ISDN线路质量)下重新编码的语音只有在有噪声的情况下才能被人类理解


TLDR;以与MP3文件相同的采样率将MP3转换为单通道FLAC文件

详细解释:

由于您使用MP3文件作为流程输入,当您重新采样到16KHz时,MP3压缩工件可能会对您造成伤害(您听不到这一点,但算法会)

为了证实这一理论:

  • 执行
    ffprobe-hide_banner filename.mp3
    它将输出如下内容:
  • 在这种情况下,Google Spech Api的采样率是可以的。只需在不更改采样率的情况下对文件进行转码(从ffmpeg命令中删除-ar 16000)

  • 如果原始MP3比特率很低,您可能会遇到麻烦。320kb/s似乎是安全的(除非录音有很多噪音)

  • 考虑到在64kb/s(ISDN线路质量)下重新编码的语音只有在有噪声的情况下才能被人类理解


我终于找到了问题的解决方案和原因。实际上,得到空结果是php api代码的一个缺陷。您需要做的是:

替换此项:

$operation->pollUntilComplete();
据此:

while(!$operation->isDone()){
       $operation->pollUntilComplete();
}

阅读以下内容:

我终于找到了问题的解决方案和原因。实际上,获取空结果是php api代码的一个缺陷。您需要做的是:

替换此项:

$operation->pollUntilComplete();
据此:

while(!$operation->isDone()){
       $operation->pollUntilComplete();
}

阅读以下内容:

谢谢你的建议。我尝试了这个建议。仍然不起作用。我尝试了一个经过验证的mp3文件,我看到它可以工作,所以代码可以。我正在测试的mp3文件具有32000 Hz,80 kb/s比特率,通道2(使用单声道转换为flac)。肯定有一些与mp3文件参数相关。@Md.ShafiqHossain-很抱歉听到这个消息。mp3对人类的声音存档很好。目前机器在这方面存在问题。我不知道mp3->to simple wave重建器(具有超分辨率)行得通。仍在进行中。我尝试使用wav文件,但仍然没有成功。wav文件参数如下:持续时间:01:57:52.82,比特率:1411 kb/s流#0:0:音频:pcm_s16le([1][0][0][0]/0x0001),44100Hz,立体声,S161411kb/s转换成FLAC如下:持续时间:01:57:52.82,开始时间:0.000000,比特率:153kb/s流#0:0:音频:FLAC,16000Hz,单声道,s16
也尝试了44100Hz,同样的结果没有成功。谢谢你的建议。我尝试了这个建议。仍然不起作用。我尝试了一个经验证的mp3文件,我看到了它的工作原理king,所以代码没问题。我正在测试的mp3文件有32000赫兹,80 kb/s比特率,通道2(用单声道转换成flac)。肯定有一些与mp3文件参数相关。@Md.ShafiqHossain-很抱歉听到这个消息。mp3对人类的声音存档很好。目前机器在这方面存在问题。我不知道mp3->to simple wave重建器(具有超分辨率)行得通。仍在进行中。我尝试使用wav文件,但仍然没有成功。wav文件参数如下:持续时间:01:57:52.82,比特率:1411 kb/s流#0:0:音频:pcm_s16le([1][0][0][0]/0x0001),44100Hz,立体声,S161411kb/s转换成FLAC,如下:持续时间:01:57:52.82,开始时间:0.000000,比特率:153kb/s流#0:0:音频:FLAC,16000Hz,单声道,s16
也尝试了44100Hz,同样的结果没有成功。