Yandex Cloud
Поиск
Связаться с намиПодключиться
  • Документация
  • Блог
  • Все сервисы
  • Статус работы сервисов
    • Доступны в регионе
    • Инфраструктура и сеть
    • Платформа данных
    • Контейнеры
    • Инструменты разработчика
    • Бессерверные вычисления
    • Безопасность
    • Мониторинг и управление ресурсами
    • Машинное обучение
    • Бизнес-инструменты
  • Все решения
    • По отраслям
    • По типу задач
    • Экономика платформы
    • Безопасность
    • Техническая поддержка
    • Каталог партнёров
    • Обучение и сертификация
    • Облако для стартапов
    • Облако для крупного бизнеса
    • Центр технологий для общества
    • Партнёрская программа
    • Поддержка IT-бизнеса
    • Облако для фрилансеров
    • Обучение и сертификация
    • Блог
    • Документация
    • Мероприятия и вебинары
    • Контакты, чаты и сообщества
    • Идеи
    • Истории успеха
    • Тарифы Yandex Cloud
    • Промоакции и free tier
    • Правила тарификации
  • Документация
  • Блог
Проект Яндекса
© 2025 ТОО «Облачные Сервисы Казахстан»
Yandex SpeechSense
  • Начало работы
    • Все инструкции
        • Загрузка аудиоданных через консоль управления
        • Загрузка аудиоданных через gRPC API
        • Загрузка переписки из чата
      • Работа с диалогами
      • Просмотр связанных диалогов
      • Работа с отчетами
  • Аудитные логи Audit Trails
  • Управление доступом
  • Правила тарификации
  • История изменений
  • Вопросы и ответы

В этой статье:

  • Перед началом работы
  • Загрузить данные
  1. Пошаговые инструкции
  2. Работа с данными
  3. Загрузка данных
  4. Загрузка аудиоданных через gRPC API

Загрузка аудиоданных через gPRC API

Статья создана
Yandex Cloud
Обновлена 29 апреля 2025 г.
  • Перед началом работы
  • Загрузить данные

Эта инструкция поможет вам загрузить в SpeechSense данные для распознавания и анализа речи через API. В примере заданы параметры:

  • формат аудио — WAV;
  • метаданные диалога хранятся в файле metadata.json.

Аутентификация происходит от имени сервисного аккаунта с помощью IAM-токена или API-ключа.

Для ознакомления с функциональностью SpeechSense вы можете использовать быструю загрузку аудиоданных через консоль управления.

Если вы хотите загрузить переписку из чата вместо аудиозаписи разговора, обратитесь к инструкции.

Перед началом работыПеред началом работы

Для работы с API Yandex Cloud потребуется Git, Python 3.6 или старше и пакет grpcio-tools. Узнайте, как установить Python.

Чтобы подготовиться к загрузке аудиоданных:

  1. Создайте подключение типа Двухканальное аудио.

    Если вы хотите загрузить связанные диалоги, добавьте в общие метаданные подключения строковый ключ ticket_id. По этому ключу диалоги будут связаны.

  2. Создайте проект с новым подключением.

    В созданные проект и подключение будут загружены аудиозаписи разговоров.

  3. В консоли управления создайте сервисный аккаунт.

  4. Добавьте сервисный аккаунт в пространство с ролью Data editor. Это позволит сервисному аккаунту загружать данные в SpeechSense.

  5. Чтобы аутентифицироваться в API Yandex Cloud, создайте API-ключ или IAM-токен для сервисного аккаунта.

  6. Склонируйте репозиторий API Yandex Cloud:

    git clone https://github.com/yandex-cloud/cloudapi
    
  7. Установите пакет grpcio-tools с помощью менеджера пакетов pip:

    pip install grpcio-tools
    

Загрузить данныеЗагрузить данные

Примечание

Даты указываются в формате ISO 8601 UTC с нулевым смещением времени. Если необходимо указать московское время, добавьте +03:00 вместо Z в конец строки: 2025-04-24T14:34:19+03:00.

  1. Перейдите в папку с репозиторием API Yandex Cloud, создайте папку upload_data, сгенерируйте в ней код интерфейса клиента и перейдите в папку upload_data:

    Bash
    cd <путь_к_папке_cloudapi> && \
    mkdir upload_data && \
    python3 -m grpc_tools.protoc -I . -I third_party/googleapis \
         --python_out=./upload_data/ \
         --grpc_python_out=./upload_data/ \
         google/api/http.proto \
         google/api/annotations.proto \
         yandex/cloud/api/operation.proto \
         google/rpc/status.proto \
         yandex/cloud/operation/operation.proto \
         yandex/cloud/validation.proto \
         yandex/cloud/speechsense/v1/*.proto \
         yandex/cloud/speechsense/v1/*/*.proto
    cd upload_data
    
  2. В папке upload_data создайте Python-скрипт upload_grpc.py, который загрузит данные в подключение SpeechSense одним сообщением:

    import argparse
    import json
    from typing import Dict
    import grpc
    import datetime
    
    from yandex.cloud.speechsense.v1 import talk_service_pb2
    from yandex.cloud.speechsense.v1 import talk_service_pb2_grpc
    from yandex.cloud.speechsense.v1 import audio_pb2
    
    # Для аутентификации с IAM-токеном замените параметр api_key на iam_token
    def upload_talk(connection_id: int, metadata: Dict[str, str], api_key: str, audio_bytes: bytes):
       credentials = grpc.ssl_channel_credentials()
       channel = grpc.secure_channel('api.speechsense.yandexcloud.net:443', credentials)
       talk_service_stub = talk_service_pb2_grpc.TalkServiceStub(channel)
    
    # Формирование запроса к API
       request = talk_service_pb2.UploadTalkRequest(
          metadata=talk_service_pb2.TalkMetadata(
             connection_id=str(connection_id),
             fields=metadata
          ),
          # Формат аудио — WAV
          audio=audio_pb2.AudioRequest(
             audio_metadata=audio_pb2.AudioMetadata(
                container_audio=audio_pb2.ContainerAudio(
                   container_audio_type=audio_pb2.ContainerAudio.ContainerAudioType.CONTAINER_AUDIO_TYPE_WAV
                )
             ),
             audio_data=audio_pb2.AudioChunk(data=audio_bytes)
          )
       )
       # Тип аутентификации — API-ключ
       response = talk_service_stub.Upload(request, metadata=(
          ('authorization', f'Api-Key {api_key}'),
       # Для аутентификации с IAM-токеном передавайте заголовок
       #  ('authorization', f'Bearer {iam_token}'),
       ))
    
       # Вывести идентификатор диалога
       print(f'Dialog ID: {response.talk_id}')
    
    if __name__ == '__main__':
       parser = argparse.ArgumentParser()
       parser.add_argument('--key', required=True, help='API key or IAM token', type=str)
       parser.add_argument('--connection-id', required=True, help='Connection ID', type=str)
       parser.add_argument('--audio-path', required=True, help='Audio file path', type=str)
       parser.add_argument('--meta-path', required=False, help='JSON with the dialog metadata', type=str, default=None)
       args = parser.parse_args()
    
       # Значения по умолчанию, если метаданные не указаны
       if args.meta_path is None:
          now = datetime.datetime.now().isoformat()
          metadata = {
             'operator_name': 'Operator',
             'operator_id': '1111',
             'client_name': 'Client',
             'client_id': '2222',
             'date': str(now),
             'date_from': '2023-09-13T17:30:00.000Z',
             'date_to': '2023-09-13T17:31:00.000Z',
             'direction_outgoing': 'true',
          }
       else:
          with open(args.meta_path, 'r') as fp:
             metadata = json.load(fp)
    
       with open(args.audio_path, 'rb') as fp:
          audio_bytes = fp.read()
       upload_talk(args.connection_id, metadata, args.key, audio_bytes)
    
  3. В папке upload_data создайте файл metadata.json с метаданными разговора:

    {
       "operator_name": "<имя_оператора>",
       "operator_id": "<идентификатор_оператора>",
       "client_name": "<имя_клиента>",
       "client_id": "<идентификатор_клиента>",
       "date": "<дата_начала>",
       "direction_outgoing": "<исходящее_направление:_true_или_false>",
       "language": "<язык>",
       <дополнительные_параметры_подключения>
    }
    

    Поля в файле должны соответствовать параметрам подключения, в которое вы загружаете аудиозаписи. В шаблоне выше указаны обязательные поля для подключений типа Двухканальное аудио. Если вы добавляли другие параметры в подключение, укажите их в файле metadata.json. Например, если вы загружаете связанные диалоги, добавьте в файл параметр:

    {
       ...
       "ticket_id": "<номер_задачи>"
    }
    
  4. Задайте API-ключ сервисного аккаунта:

    export API_KEY=<API-ключ_сервисного_аккаунта>
    

    Если вы используете IAM-токен, передайте его вместо API-ключа:

    export IAM_TOKEN=<IAM-токен_сервисного_аккаунта>
    
  5. Запустите скрипт upload_grpc.py, передав нужные параметры:

    python3 upload_grpc.py \
       --audio-path <аудиофайл> \
       --meta-path <метаданные> \
       --connection-id <идентификатор_подключения> \
       --key ${API_KEY}
    

    Где:

    • --audio-path — путь к файлу с аудио диалога.
    • --meta-path — путь к файлу с метаданными диалога.
    • --connection-id — идентификатор подключения, в которое вы загружаете данные.
    • --key — API-ключ для аутентификации. Если вы используете IAM-токен, укажите переменную окружения IAM_TOKEN вместо API_KEY.

Была ли статья полезна?

Предыдущая
Загрузка аудиоданных через консоль управления
Следующая
Загрузка переписки из чата
Проект Яндекса
© 2025 ТОО «Облачные Сервисы Казахстан»