Здравствуйте.
Я следую <a href="https://yandex.cloud/ru/docs/speechkit/stt/api/transcribation-api-v3#curl_1" rel="nofollow">документации</a> и выполняю следующий запрос:
<pre><code class="javascript">const { data } = await axios.post<any, { data: ISpeechToTextResponse }>(
this.speechToTextUrl,
{
uri: dto.storageUrl,
recognition_model: {
model: 'general',
audio_format: {
container_audio: {
container_audio_type: 'OggOpus',
},
},
},
},
{
headers: {
Authorization: `Api-Key ${this.speechKitApiKey}`,
},
},
);</code></pre>
Однако я получаю следующую ошибку:
<pre><code class="javascript">data: {
error: 'unknown value "\\"OggOpus\\"" for enum speechkit.stt.v3.ContainerAudio.ContainerAudioType',
code: 3,
message: 'unknown value "\\"OggOpus\\"" for enum speechkit.stt.v3.ContainerAudio.ContainerAudioType',
details: []
}</code></pre>
Файл, который я отправляю, имеет формат Ogg и передается через Telegram. При попытке указать формат файла как OggOpus, ошибка сохраняется. Вместо этого, если я указываю формат WAV, запрос проходит успешно, файл отправляется и сохраняется в бакете. Далее, следуя инструкции, я выполняю запрос для проверки статуса распознавания.
<pre><code class="javascript">const { data } = await axios.get<ISpeechToTextResponse>(
`${process.env.YA_SPEECH_KIT_GET_INFO_OF_OPERATION_URL}/${speech_kit_id}`,
{
headers: {
Authorization: `Api-key ${this.speechKitApiKey}`,
},
},
);</code></pre>
Могу ли я получить помощь по устранению данной проблемы?
Проблема, с которой вы столкнулись, связана с неверной передачей параметров в запросе к API Яндекс.SpeechKit. Давайте разберемся с ошибкой и возможными решениями.
### Ошибка
Сообщение об ошибке:
```
'unknown value "\\"OggOpus\\"" for enum speechkit.stt.v3.ContainerAudio.ContainerAudioType'
```
указывает на то, что значение, которое вы передали для типа контейнера аудио, неправильно. Это может быть связано с использованием лишних кавычек или неправильным форматом текста.
### Решение
1. **Обратите внимание на знаки кавычек**: Убедитесь, что вы передаете строку без лишних экранирующих символов. Вместо `'"OggOpus"'` используйте просто `'OggOpus'`.
2. **Корректная структура запроса**: Вам нужно убедиться, что JSON-объект, который вы отправляете, правильно структурирован. Вот как должен выглядеть ваш код:
```javascript
const { data } = await axios.post(
this.speechToTextUrl,
{
uri: dto.storageUrl,
recognition_model: {
model: 'general',
audio_format: {
container_audio: 'OggOpus',
},
},
},
{
headers: {
Authorization: `Api-Key ${this.speechKitApiKey}`,
},
}
);
```
### Дополнительные шаги
- **Проверьте формат файла**: Убедитесь, что ваш аудиофайл действительно в формате Ogg Opus. Иногда файлы могут быть восстановлены в другом формате, даже если они имеют расширение .ogg. Попробуйте прослушать и протестировать аудиофайл, чтобы убедиться, что формат соответствует Ogg Opus.
- **Проверка JSON**: Используйте инструменты, такие как [Postman](https://www.postman.com/) или [cURL](https://curl.se/), чтобы выполнять тестовые запросы с помощью правильного JSON-формата и заголовков, что позволит проверить, правильно ли вы формируете ваши запросы.
- **Документация**: Если проблема сохраняется, обратите внимание на документацию Яндекс.SpeechKit. В ней могут быть указаны последние изменения или дополнительные требования к формату файла.
Если вы следовали всем указанным шагам и ошибка все еще возникает, не стесняйтесь обращаться в техподдержку Яндекса или в их сообщество разработчиков, где могут помочь более опытные пользователи.
Ошибка в том, что в этой документации не верно указан формат, формат нужно указывать, как показано в <a href="https://yandex.cloud/ru/docs/speechkit/stt-v3/api-ref/grpc/stt_service#ContainerAudio" rel="nofollow">этой </a> документации.