Я пытаюсь использовать Google Cloud Speech-to-text, используя клиентские библиотеки, из среды node.js, и вижу то, чего не понимаю: я получаю другой результат для того же примера аудиофайла, и та же конфигурация, в зависимости от того, использую ли я ее из исходного набора образцов или из собственного набора.
Есть запросы и ответы:
Базовая линия - это собственные тестовые данные Google файл, доступный здесь: https://storage.googleapis.com/cloud-samples-tests/speech/brooklyn.flac
Запрос:
{
"config": {
"encoding": "FLAC",
"languageCode": "en-US",
"sampleRateHertz": 16000,
"enableAutomaticPunctuation": true
},
"audio": {
"uri": "gs://cloud-samples-tests/speech/brooklyn.flac"
}
}
Ответ:
{
"results": [
{
"alternatives": [
{
"transcript": "How old is the Brooklyn Bridge?",
"confidence": 0.9831430315971375
}
]
}
]
}
Пока все хорошо. Но если я скачаю этот аудиофайл, повторно загрузу его в свое собственное ведро и сделаю то же самое, то:
Запрос:
{
"config": {
"encoding": "FLAC",
"languageCode": "en-US",
"sampleRateHertz": 16000,
"enableAutomaticPunctuation": true
},
"audio": {
"uri": "gs://goe-transcript-creation/brooklyn.flac"
}
}
Ответ:
{
"results": [
{
"alternatives": [
{
"transcript": "how old is",
"confidence": 0.8902621865272522
}
]
}
]
}
Как видите, это тот же запрос. Повторно загруженные аудиоданные находятся здесь: https://storage.googleapis.com/goe-transcript-creation/brooklyn.flac
Это тот же файл, что и в первом примере ... нет разницы. Тем не менее, результаты разные; Я получаю только половину предложения.
Что мне здесь не хватает? Спасибо.
Обновление 1:
То же самое происходит и с инструментом CLI:
$ gcloud ml speech recognize gs://cloud-samples-tests/speech/brooklyn.flac --language-code=en-US
{
"results": [
{
"alternatives": [
{
"confidence": 0.98314303,
"transcript": "how old is the Brooklyn Bridge"
}
]
}
]
}
$ gcloud ml speech recognize gs://goe-transcript-creation/brooklyn.flac --language-code=en-US
ERROR: (gcloud.ml.speech.recognize) INVALID_ARGUMENT: Invalid recognition 'config': bad encoding..
$ gcloud ml speech recognize gs://goe-transcript-creation/brooklyn.flac --language-code=en-US --encoding=FLAC
ERROR: (gcloud.ml.speech.recognize) INVALID_ARGUMENT: Invalid recognition 'config': bad sample rate hertz.
$ gcloud ml speech recognize gs://goe-transcript-creation/brooklyn.flac --language-code=en-US --encoding=FLAC --sample-rate=16000
{
"results": [
{
"alternatives": [
{
"confidence": 0.8902483,
"transcript": "how old is"
}
]
}
]
}
Интересно, что при вытягивании аудио из другого сегмента, мне нужно указать кодировку и частоту дискретизации, иначе это не сработает ... но это не нужно, когда я использую исходное тестовое поле.
Обновление 2:
Если я не использую Google Cloud Storage, но загружаю данные непосредственно в текстовом запросе, он работает как положено:
$ gcloud ml speech recognize brooklyn.flac --language-code=en-US
{
"results": [
{
"alternatives": [
{
"confidence": 0.98314303,
"transcript": "how old is the Brooklyn Bridge"
}
]
}
]
}
Так что проблема не решается Кажется, не с самого распознавания, но с доступом к аудиоданным. Очевидное предположение состоит в том, что, возможно, это ошибка загрузки, и данные каким-то образом повреждены по пути?
Мы можем проверить это, извлекая данные из облака и сравнивая с оригиналом . Кажется, он не сломан.
Так, может быть, это проблема, когда служба STT обращается к службе хранения? Но почему только с одним ведром? Или это проблема метаданных файла?