Речевая запись в Azure Cognitive ServicesSpeech transcription with Azure Cognitive Services

Центры здравоохранения клиентов являются неотъемлемой частью успеха многих предприятий.Customer care centers are an integral part of the success of many businesses. Вы можете повысить эффективность центров обработки вызовов с помощью Speech AI.You can improve the efficiency of your call centers by using speech AI. Распознавание речи и анализ больших объемов зарегистрированных звонков клиентов могут предоставить вашему бизнесу ценную информацию о текущих тенденциях, недостатках продуктов и успешности.Speech recognition and the analysis of high volumes of recorded customer calls can provide your business with valuable information about current trends, product shortcomings, and successes. Корпоративные решения, использующие API распознавания речи в Azure Cognitive Services, могут быть реализованы для использования и обработки таких больших объемов дискретных данных.Enterprise solutions that use the Speech APIs of Azure Cognitive Services can be implemented to consume and process such high volumes of discrete data.

В эталонной архитектуре, описанной в этой статье, показано, как создать конвейер для приема звука и преобразования речи в текст для центров обслуживания клиентов.The reference architecture described in this article shows how to build an audio ingestion and speech-to-text transcription pipeline for customer care centers. Этот конвейер обрабатывает пакеты записанных звуковых файлов и сохраняет текстовые файлы расшифрованной в хранилище BLOB-объектов Azure.This pipeline processes batches of recorded audio files and stores the transcribed text files in Azure Blob storage. Эта архитектура не реализует речевую обработку в режиме реального времени.This architecture doesn't implement real-time speech processing.

Этот конвейер можно позже передать на следующий этап реализации обработки речи в речевом процессе.This pipeline can later feed into the next phase of your speech AI implementation. На этом этапе можно обработать расшифрованной текст, чтобы распознать и удалить конфиденциальную информацию, выполнить анализ тональности и т. д.In that phase, you can process transcribed text to recognize and remove sensitive information, perform sentiment analysis, and so on.

Эталонная реализация для этой архитектуры доступна на сайте GitHub.The reference implementation for this architecture is available on GitHub.

ArchitectureArchitecture

Передача звуковых файлов

Эту архитектуру можно реализовать с помощью учетной записи Azure и предоставить клиентским приложениям доступ к конвейеру через API-интерфейсы RESTFUL.You can implement this architecture by using your Azure account and allow client applications access to the pipeline through REST APIs. Приложение проходит через три этапа для отправки звукового файла:The application goes through a three-step process to upload an audio file:

  1. Проверка подлинности выполняется с помощью Azure Active Directory (Azure AD).It authenticates by using Azure Active Directory (Azure AD). Этот шаг необходим для первой передачи файла.This step is required for the first file upload.
  2. Он вызывает REST API, чтобы получить маркер подписанного URL-адрес (SAS), необходимый для доступа к хранилищу больших двоичных объектов Azure.It calls the REST API to get the shared access signature (SAS) token required to access Azure Blob storage.
  3. Звуковые файлы перегружаются в контейнер больших двоичных объектов.It uploads the audio files to a blob container.

Эталонное клиентское приложение использует JavaScript для передачи файлов, как показано в этом примере.The reference client application uses JavaScript to upload the files, as shown in this example. После отправки файла создается триггер службы "Сетка событий Azure", который вызывает функцию Azure.After the file is uploaded, an Azure Event Grid trigger is generated that invokes an Azure function. Функция обрабатывает файл с помощью API-интерфейсов распознавания речи Azure Cognitive Services.The function processes the file by using the Azure Cognitive Services Speech APIs. Текст расшифрованной хранится в отдельном контейнере больших двоичных объектов, готовом для использования на следующем этапе конвейера: анализ речи и хранение в базе данных.The transcribed text is stored in a separate blob container, ready for consumption into the next phase of the pipeline: speech analysis and storage in a database.

Архитектура использует следующие службы Azure:The architecture uses these Azure services:

Хранилище BLOB -объектов Azure хранит объекты в облаке.Azure Blob storage stores objects in the cloud. Хранилище BLOB-объектов оптимизировано для хранения огромных объемов неструктурированных данных, таких как текстовые или двоичные данные.Blob storage is optimized for storing massive amounts of unstructured data, like text or binary data. Так как конфиденциальные данные могут быть сохранены в большом двоичном объекте, необходимо обеспечить безопасность доступа с помощью методов проверки подлинности, таких как ключи SAS.Because sensitive information might be saved in the blob, you need to secure its access by using authentication methods like SAS keys.

Служба " Сетка событий Azure " предоставляет встроенную поддержку эффективных управляемых событиями архитектур в Azure.Azure Event Grid provides built-in support for efficient event-driven architectures on Azure. По завершении передачи звукового файла сетка событий активирует событие BlobCreated для функции транскрипции.When the audio file upload is complete, Event Grid triggers a BlobCreated event for the transcription function.

Функции Azure предоставляют возможности вычислений на основе событий без необходимости создавать инфраструктуру.Azure Functions provides event-driven compute capabilities without requiring you to build the infrastructure. Функция в этой эталонной архитектуре расшифровывает голосовые аудиофайлы в текст.The function in this reference architecture transcribes the speech audio files to text. Модель является бессерверной моделью, а это означает, что для размещения функции используется план потребления .The model is a serverless model, which means the Consumption plan is used to host the function.

Cognitive Services Azure — это набор API-интерфейсов, которые помогают разработчикам создавать интеллектуальные приложения без обширных навыков использования искусственного интеллекта или обработки и анализа данных.Azure Cognitive Services is a collection of APIs that can help developers build intelligent applications without extensive AI or data science skills. Функция транскрипции вызывает API-интерфейсы Cognitive Services речи в текст.The transcription function calls the Cognitive Services speech-to-text APIs. Выходные данные для примера транскрипции звукового файла могут выглядеть примерно так, как показано в следующих метаданных:The output for a sample audio file transcription might look similar to the following metadata:

ResultId:19e70bee8b5348a6afb67817825a9586 Reason:RecognizedSpeech Recognized text:<Text for sample audio.>. Json:{"DisplayText":"Text for sample audio.","Duration":53700000,"Id":"28526a6304da4af1922fedd4edcdddbb","Offset":3900000,"RecognitionStatus":"Success"}.ResultId:19e70bee8b5348a6afb67817825a9586 Reason:RecognizedSpeech Recognized text:<Text for sample audio.>. Json:{"DisplayText":"Text for sample audio.","Duration":53700000,"Id":"28526a6304da4af1922fedd4edcdddbb","Offset":3900000,"RecognitionStatus":"Success"}.

Служба управления API Azure обеспечивает безопасный доступ к интерфейсам API для других служб.Azure API Management provides secure access to REST APIs. Так как только клиенты, прошедшие проверку подлинности через службу управления API, могут запросить маркер SAS, эта служба обеспечивает дополнительный уровень безопасности в архитектуре.Because only clients authenticated via API Management can request a SAS token, this service provides an additional layer of security in the architecture.

Azure Active Directory обеспечивает управление удостоверениями и безопасный доступ к ресурсам на облачной платформе Azure.Azure Active Directory provides identity management and secured access to resources on the Azure cloud platform. Клиент в этой архитектуре сначала должен пройти проверку подлинности с помощью Azure AD, чтобы получить доступ к REST API.The client in this architecture first needs to authenticate by using Azure AD to be able to access the REST API. REST API создает маркер доступа для хранилища BLOB-объектов, используя учетные данные Azure AD владельца компании.The REST API creates the access token for the blob storage by using the Azure AD credentials of the business owner. Управление доступом на основе ролей предоставляет клиенту минимальные права доступа, необходимые для отправки звуковых файлов.Role-based access control gives the client the minimum access privileges needed to upload audio files.

Azure Key Vault обеспечивает безопасное хранение секретов и ключей.Azure Key Vault provides secure storage of secrets and keys. В этой эталонной архитектуре хранятся учетные данные и другие секреты, необходимые для создания маркеров SAS в хранилище ключей.This reference architecture stores the account credentials and other secrets needed to generate the SAS tokens in the key vault. Интерфейсы API и функция распознавания речи обращаются к хранилищу для получения секретов.The REST APIs and the speech transcription function access this vault to retrieve the secrets.

Вопросы масштабируемостиScalability considerations

Хранилище BLOB-объектов AzureAzure Blob storage

Масштабируемость при передачеScalability during upload

Для создания высокопроизводительного и экономичного масштабируемого решения в этой эталонной архитектуре используется шаблон проектирования камердинера Key.To create a high-performing and cost-effective scalable solution, this reference architecture uses the Valet Key design pattern. Клиентское приложение отвечает за фактическую передачу данных.The client application is responsible for the actual data upload. Маркер SAS разрешает доступ к хранилищу BLOB-объектов.The SAS token restricts access to blob storage. Клиент должен сначала получить этот маркер с помощью REST API.The client needs to first acquire this token by using the REST API. API в реализации Reference создает маркер SAS пользовательского делегата , созданный с помощью Azure Active Directory учетных данных владельца компании.The API in the reference implementation generates a user delegate SAS token that's created by using the Azure Active Directory credentials of the business owner. В большинстве случаев этот метод является более безопасным и предпочтительнее, чем маркеры SAS, созданные с помощью ключа учетной записи.For most scenarios, this method is more secure and is preferred over SAS tokens created by using an account key. Дополнительные сведения о маркерах SAS см. в разделе типыподписанных URL.For more information on SAS tokens, see Types of shared access signatures.

Масштабируемость размера файлаScalability for file size

Эталонная архитектура позволяет передавать большие звуковые файлы в облако, разделив их на фрагменты размером 4 КБ.The reference architecture allows large audio files to be uploaded to the cloud by dividing them into 4-KB chunks. Фрагментация — это распространенная методика, используемая для передачи больших двоичных объектов, как описано в этой статье.Chunking is a common technique used to upload large blobs, as discussed in this article. Максимальный размер файла, который можно передать, зависит от максимального размера BLOB-объекта, который может иметь размер до 4,77 ТБ.The maximum file size that can be uploaded is dictated by the maximum size limit of the blob, which can be as much as 4.77 TB.

Масштабируемость хранилищаScalability for storage

Хранилище BLOB-объектов Azure может регулировать запросы на обслуживание для каждого большого двоичного объекта или для каждой учетной записи хранения.Azure Blob storage can throttle service requests per blob or per storage account. Ограничения регулирования на уровне больших двоичных объектов в этом сценарии могут быть не связаны, поскольку каждый отправленный файл соответствует одному большому двоичному объекту.The blob-level throttling limits might not be a concern in this scenario because every uploaded file corresponds to a single blob. Однако несколько клиентов, которые отправляют несколько файлов в одну учетную запись хранения, могут превысить ограничения учетной записи.However, multiple clients uploading multiple files to a single storage account might exceed the account's limits. Если это возможно, рассмотрите возможность использования нескольких учетных записей хранения и секционирования объектов данных между ними.If that's a possibility, consider using multiple storage accounts and partitioning the data objects across them. Подробный список соображений масштабируемости для большого двоичного объекта см. в статье контрольные показатели производительности и масштабируемости для хранилища BLOB-объектов.For a detailed list of scalability considerations for the blob, see Performance and scalability checklist for Blob storage.

Сетка событий AzureAzure Event Grid

Функция, расшифровывает звуковые файлы, активируется по завершении передачи.The function that transcribes the audio files is triggered when the upload finishes. Эта Эталонная архитектура использует триггер службы "Сетка событий" вместо триггера хранилища BLOB-объектов.This reference architecture uses an Event Grid trigger instead of the Blob storage trigger. Это связано с тем, что события триггера больших двоичных объектов могут быть пропущены, так как количество больших двоичных объектов в контейнере значительно увеличится.This is because the blob trigger events can be missed as the number of blobs in a container increases significantly. Отсутствующие триггеры отрицательно влияют на пропускную способность и надежность приложения.Missing triggers negatively affect application throughput and reliability. Дополнительные сведения см. в разделе альтернативные триггеры BLOB.For more information, see Blob trigger alternatives.

Azure Cognitive ServicesAzure Cognitive Services

API-интерфейсы Cognitive Services могут иметь ограничения запросов на основе уровня подписки.Cognitive Services APIs might have request limits based on the subscription tier. Рассмотрите возможность контейнеризация этих API, чтобы избежать регулирования обработки больших объемов данных.Consider containerizing these APIs to avoid throttling large volume processing. Контейнеры обеспечивают гибкость развертывания, будь то облачная или локальная.Containers give you flexibility of deployment, whether in the cloud or on-premises. Кроме того, можно уменьшить побочные эффекты новой версии при развертывании с помощью контейнеров.You can also mitigate side effects of new version rollouts by using containers. Дополнительные сведения см. в разделе Поддержка контейнеров в Cognitive Services Azure .See Container support in Azure Cognitive Services for more information.

Вопросы безопасностиSecurity considerations

Многие из соображений безопасности для бессерверных веб-приложений применяются к этой эталонной архитектуре.Many of the security considerations for a serverless web applications apply to this reference architecture. В следующих разделах рассматриваются вопросы, связанные с этой архитектурой.The following sections discuss considerations specific to this architecture.

Azure Active DirectoryAzure Active Directory

Звуковые файлы, хранящиеся в большом двоичном объекте, могут содержать конфиденциальные данные клиента.The audio files stored in the blob might contain sensitive customer data. Если это решение используется несколькими клиентами, важно ограничить доступ к этим файлам.If multiple clients are using this solution, it's important to restrict access to these files. В этой эталонной архитектуре для защиты этих файлов от внешних атак используются маркеры SAS.This reference architecture uses SAS tokens to protect these files from outside attacks. Эти маркеры, называемые токенами SAS для делегирования пользователей, создаются с помощью учетных данных владельца службы Azure AD.These tokens, called user delegation SAS tokens, are created by using the service owner's Azure AD credentials.

Маркер SAS позволяет управлять:A SAS token allows you to control:

  • Ресурсы, к которым могут обращаться клиенты, так как они создаются для каждого ресурса.Which resources clients can access, because it's created per resource.
  • Какие разрешения у клиентов имеются при доступе к ресурсам через Управление доступом на основе ролей.Which permissions clients have while accessing the resources, via role-based access control. Рекомендуется предоставить минимально необходимые разрешения.We recommend that you grant the minimum required permissions. Клиенты в этой архитектуре имеют доступ только на запись к BLOB-объектам.The clients in this architecture have write-only access to the blobs. Этот уровень доступа предотвращает чтение звуковых файлов других клиентов, случайно или вредоносных.This access level prevents them from reading other clients' audio files, either accidentally or maliciously.
  • При истечении срока действия отдельных маркеров.When individual tokens expire. Этот элемент управления ограничивает окно раскрытия маркера, что ограничивает возможность несанкционированного доступа к ресурсу.This control limits the window of exposure to the token, which limits the possibility of unauthorized access to the resource. Для больших файлов срок действия маркера SAS может истечь до завершения отправки.For larger files, the SAS token might expire before the upload finishes. Клиент может запросить несколько токенов для одного и того же файла.The client can request multiple tokens for the same file. Так как только клиенты, прошедшие проверку подлинности, могут сделать это, несколько запросов этих токенов не влияют на общую безопасность.Because only authenticated clients can do so, multiple requests of these tokens don't affect overall security.

Подробное описание маркеров SAS см. в статье предоставление ограниченного доступа к ресурсам службы хранилища Azure с помощью подписанных URL-адресов (SAS) .See Grant limited access to Azure Storage resources using shared access signatures (SAS) for an in-depth discussion of SAS tokens. Дополнительные сведения о токенах SAS для делегирования пользователей см. в разделе Создание SAS для делегирования пользователей .See Create a user delegation SAS to learn more about user delegation SAS tokens.

Управление APIAPI Management

В дополнение к ограничению доступа к ресурсам с помощью маркеров SAS эта Эталонная архитектура обеспечивает другой уровень безопасности с помощью управления API.In addition to restricting access to resources by using SAS tokens, this reference architecture provides another layer of security by using API Management. Клиенты должны пройти проверку подлинности с помощью управления API, прежде чем они запрашивают маркеры SAS.Clients need to authenticate by using API Management before they request SAS tokens. Управление API имеет встроенные элементы управления доступом для REST API.API Management has built-in access controls for the REST API. Рекомендуется использовать этот дополнительный уровень безопасности, так как отправленные данные могут содержать конфиденциальные сведения.We recommend this additional layer of security because the uploaded data might contain sensitive information.

Когда несколько клиентов отправляют файлы параллельно, управление API обслуживает несколько целей:When several clients upload files in parallel, API Management serves multiple purposes:

Рекомендации по обеспечению устойчивостиResiliency considerations

В случае с очень большим количеством событий сетка событий может не запустить функцию.In the case of an extremely large number of events, Event Grid might fail to trigger the function. Такие пропущенные события обычно добавляются в контейнер недоставленных писем.Such missed events are typically added to a dead letter container. Попробуйте сделать архитектуру более устойчивой, добавив дополнительную функцию супервизора .Consider making the architecture more resilient by adding an additional supervisor function. Эта функция может периодически выходить за триггер таймера.This function can periodically wake up on a timer trigger. Затем он может найти и обработать пропущенные события из контейнера недоставленных писем или путем сравнения больших двоичных объектов в контейнерах upload и транскрипция .It can then find and process missed events, either from the dead letter container or by comparing the blobs in the upload and transcribe containers.

Этот шаблон похож на шаблон супервизора агента планировщика.This pattern is similar to the Scheduler Agent Supervisor pattern. Этот шаблон не реализован в этой эталонной архитектуре для простоты.This pattern isn't implemented in this reference architecture for the sake of simplicity. Дополнительные сведения о том, как сетка событий обрабатывает ошибки, см. в статье Доставка сообщений в сетке событий и политики повтора .For more information on how Event Grid handles failures, see the Event Grid message delivery and retry policies.

Другой способ повысить устойчивость — использовать служебную шину Azure вместо службы "Сетка событий".Another way to improve resiliency is to use Azure Service Bus instead of Event Grid. Эта модель последовательно обрабатывает передачи файлов.This model sequentially processes file uploads. Клиент сигнализирует служебной шине о завершении передачи.The client signals Service Bus when an upload finishes. Затем служебная шина вызывает функцию для транскрипция переданного файла.Service Bus then invokes the function to transcribe the uploaded file. Эта модель более надежна.This model is more reliable. Однако она будет иметь меньшую пропускную способность, чем архитектура на основе событий.However, it will have less throughput than an event-based architecture. Тщательно продумайте, какая архитектура применяется к вашему сценарию и приложению.Carefully consider which architecture applies to your scenario and application.

Развертывание решенияSolution deployment

Сведения о развертывании эталонной реализации для этой архитектуры см. в файле сведений GitHub.For information about how to deploy the reference implementation for this architecture, see the GitHub readme.

Дальнейшие шагиNext steps

Вы можете обрабатывать расшифрованной Speech с помощью встроенных функций анализа речи, предоставляемых Azure Cognitive Services.You can process transcribed speech by using the built-in speech analysis features provided by Azure Cognitive Services. Дополнительные сведения см. в документации по API распознавания речи.For more information, see the documentation for Speech APIs.