Sebastien Rousseau

АУДІО АНАЛІЗАТОР

Інструмент аналізу, перекладу та аналітики мовлення на базі AI

Революція в обробці аудіоданих за допомогою Azure AI Platform

7 min read
Banner for: Інструмент аналізу, перекладу та аналітики мовлення на базі AI

Резюме для керівництва / Основні висновки

  • API пакетної транскрипції Azure (Azure Batch Transcription API) приймає аудіофайли тривалістю до 2,5 годин (WAV/MP3/OGG/FLAC), обробляє їх асинхронно та повертає масив JSON recognizedPhrases із кандидатами nBest для кожної фрази, показниками достовірності, зворотним нормалізованим текстом (ITN) і додатковою діаризацією спікерів — потокове з'єднання не потрібне (Microsoft Azure, 2024).
  • Нейронні акустичні моделі Microsoft знизили рівень помилок у словах (WER) приблизно на 50% порівняно з попередніми базовими моделями на основі прихованих марковських моделей (HMM) у розмовному тесті Switchboard, досягнувши паритету з професійними транскрибаторами-людьми на цьому наборі даних з показником ~5,1% WER (Xiong et al., Microsoft Research, оновлення 2016/2021 рр.).
  • Azure Text Analytics (тепер частина Azure AI Language) обробляє текст розшифровки шляхом вилучення ключових фраз, розпізнавання іменованих сутностей (NER), аналізу тональності з дослідженням думок та визначення мови — і все це за один виклик analyze_sentiment або begin_analyze_actions за допомогою Python SDK.
  • CherryPy забезпечує вебрівень: маршрутизацію URL-адрес, обробку завантажень частинами (multipart upload), керування сесіями та рендеринг шаблонів Jinja2 у мінімалістичному процесі Python, який може працювати на одній недорогій віртуальній машині без додаткових витрат на оркестрацію.
  • Нейронний машинний переклад Azure Translator (NMT) автоматично визначає мову джерела та перекладає розшифровки на будь-юку зі 135 цільових мов, дозволяючи проводити подальший NLP-аналіз як оригінального, так і перекладеного тексту в межах одного запуску конвеєра.

Audio Analyser ⧉ — це застосунок Python із відкритим вихідним кодом, який об'єднує три служби Azure Cognitive Services в єдиний робочий процес: пакетну транскрипцію для перетворення мовлення на текст, Azure AI Language (Text Analytics) для обробки природної мови (NLP) та Azure Translator для отримання багатомовного результату. Вебінтерфейс обслуговується CherryPy, а результати можуть бути збережені у форматі JSON, звичайному тексті або локальній базі даних SQLite.

У цій статті описується технічна архітектура кожного етапу конвеєра, контракти API Azure та вибір дизайну, зроблений на рівні CherryPy.

Як працює Audio Analyser: огляд архітектури

Конвеєр складається з п'яти окремих етапів:

  1. Завантаження — користувач надсилає аудіофайл через вебінтерфейс CherryPy. CherryPy зберігає файл у тимчасовому каталозі та повертає ідентифікатор завдання (job ID).
  2. Транскрипція — Audio Analyser надсилає файл до REST API пакетної транскрипції Azure. Оскільки пакетна транскрипція є асинхронною, застосунок періодично опитує кінцеву точку статусу завдання та чекає на стан Succeeded, перш ніж продовжити.
  3. NLP — сирий текст розшифровки передається до Azure AI Language для вилучення ключових фраз, розпізнавання іменованих сутностей (NER), аналізу тональності та визначення мови.
  4. Переклад (необов'язково) — якщо вказано цільову мову, розшифровка надсилається до Azure Translator, а NLP-аналіз запускається повторно для перекладеного тексту.
  5. Виведення результатів — результати записуються у вибраний формат виводу (JSON, TXT або SQLite) і відображаються у вебінтерфейсі CherryPy.

Єдиними залежностями часу виконання поза стандартною бібліотекою Python є azure-cognitiveservices-speech, azure-ai-textanalytics, azure-ai-translation-text та cherrypy. Усі облікові дані Azure зчитуються зі змінних середовища.

Azure Cognitive Services: механізм пакетної транскрипції

API пакетної транскрипції служби Azure Speech (/speechtotext/v3.0/transcriptions) приймає посилання на аудіофайл у сховищі Azure Blob Storage та JSON-об'єкт конфігурації. Audio Analyser завантажує локальний файл у сховище Blob Storage за допомогою попередньо підписаного SAS URL, а потім надсилає завдання транскрипції.

Мінімальне корисне навантаження для надсилання завдання:

{
  "contentUrls": ["https://<account>.blob.core.windows.net/<container>/<file>.wav?<sas>"],
  "locale": "en-US",
  "displayName": "audio-analyser-job-001",
  "properties": {
    "diarizationEnabled": true,
    "wordLevelTimestampsEnabled": true,
    "punctuationMode": "DictatedAndAutomatic",
    "profanityFilterMode": "Masked"
  }
}

Масив recognizedPhrases у відповіді містить один об'єкт для кожного розпізнаного висловлювання. Кожен запис містить:

Тонке налаштування Custom Speech доступне для предметно-орієнтованого словникового запасу. Завантаження вимовного лексикону або адаптаційного корпусу (набору текстових речень, характерних для певної галузі) коригує мовну модель і може суттєво знизити рівень помилок у словах (WER) для спеціалізованого контенту, наприклад, фінансових термінів або медичного жаргону.

Обробка природної мови за допомогою Azure AI Language

Після транскрипції Audio Analyser надсилає розшифровку у відображуваному форматі до Azure AI Language через Python SDK azure-ai-textanalytics:

from azure.ai.textanalytics import TextAnalyticsClient
from azure.core.credentials import AzureKeyCredential

client = TextAnalyticsClient(
    endpoint=os.environ["AZURE_LANGUAGE_ENDPOINT"],
    credential=AzureKeyCredential(os.environ["AZURE_LANGUAGE_KEY"])
)

documents = [{"id": "1", "language": detected_lang, "text": transcript}]

sentiment_result = client.analyze_sentiment(documents, show_opinion_mining=True)
for doc in sentiment_result:
    print(f"Sentiment: {doc.sentiment}")
    print(f"Scores: pos={doc.confidence_scores.positive:.2f} "
          f"neg={doc.confidence_scores.negative:.2f} "
          f"neu={doc.confidence_scores.neutral:.2f}")
    for sentence in doc.sentences:
        for opinion in sentence.mined_opinions:
            print(f"  Target: {opinion.target.text}, "
                  f"Assessment: {[a.text for a in opinion.assessments]}")

keyphrases_result = client.extract_key_phrases(documents)
entities_result  = client.recognize_entities(documents)

Параметр show_opinion_mining=True вмикає аналіз тональності на рівні аспектів: API повертає не лише полярність на рівні документа, але й конкретні пари "об'єкт–оцінка" (наприклад, об'єкт="якість звуку", оцінка="низька"). Це робить вихідні дані корисними для виявлення конкретних проблем під час аналізу дзвінків у службі підтримки клієнтів.

Розпізнавання іменованих сутностей класифікує фрагменти тексту за однією з категорій: Person, Organization, Location, Event, Product, DateTime, Quantity, IP, URL, Email, PersonType, Skill, Address, PhoneNumber.

Багатомовна підтримка через Azure Translator

Azure Translator викликається після визначення мови, якщо користувач вибирає цільову мову. Служба підтримує 135 мов і діалектів за допомогою нейронного машинного перекладу (NMT). Audio Analyser використовує REST-endpoint /translate з параметром from у значенні autodetect, тому вказувати мову джерела не потрібно:

import requests, uuid

url = "https://api.cognitive.microsofttranslator.com/translate"
params = {"api-version": "3.0", "to": target_lang}
headers = {
    "Ocp-Apim-Subscription-Key": os.environ["AZURE_TRANSLATOR_KEY"],
    "Ocp-Apim-Subscription-Region": os.environ["AZURE_TRANSLATOR_REGION"],
    "Content-type": "application/json",
    "X-ClientTraceId": str(uuid.uuid4())
}
body = [{"text": transcript}]
response = requests.post(url, params=params, headers=headers, json=body)
translated_text = response.json()[0]["translations"][0]["text"]
detected_language = response.json()[0]["detectedLanguage"]["language"]

Після перекладу Audio Analyser за бажанням повторно запускає NLP-аналіз Text Analytics для перекладеного тексту, щоб результати виявлення ключових фраз і тональності були доступні як мовою оригіналу, так і цільовою мовою.

Вибір формату виведення (JSON, TXT, SQLite) задається під час запуску. Результат у SQLite зберігає кожну сесію аналізу як рядок із колонками для ідентифікатора завдання (job ID), позначки часу, мови джерела, розшифровки, перекладеної розшифровки, оцінок тональності та ключових фраз у вигляді блоку JSON, що дозволяє виконувати SQL-запити до різних сесій.

CherryPy як вебрівень

CherryPy порівнює маршрути URL-адрес із методами Python за допомогою контролерів на основі класів. Audio Analyser використовує три маршрути:

Маршрут Метод Опис
GET / index() Відображає форму завантаження
POST /analyse analyse() Приймає завантаження частинами, запускає конвеєр, повертає ідентифікатор завдання
GET /results/<job_id> results() Опитує статус завдання; відображає сторінку результатів після завершення

Мінімальна конфігурація дозволяє зберігати невеликий розмір сервера:

import cherrypy

cherrypy.config.update({
    "server.socket_host": "0.0.0.0",
    "server.socket_port": 8080,
    "tools.sessions.on": True,
    "tools.sessions.timeout": 60
})
cherrypy.quickstart(AudioAnalyserApp(), "/", conf)

Стан сесії зберігає поточний ідентифікатор завдання, вибраний формат виводу та цільову мову перекладу. Вбудоване сховище сесій CherryPy за замовчуванням базується на файлах, що не потребує зовнішнього шару кешування.

Поширені запитання

Які аудіоформати та розміри файлів підтримує Audio Analyser? API пакетної транскрипції Azure підтримує файли WAV, MP3, OGG та FLAC тривалістю до 2,5 годин. Файли, що перевищують цей ліміт, слід розділити перед завантаженням. Двоканальні (стерео) файли підтримуються; конвертація в моно не потрібна.

Як працює діаризація спікерів? Встановлення значення diarizationEnabled: true у запиті на пакетну транскрипцію активує модель розпізнавання спікерів Azure. Кожна фраза recognizedPhrase у відповіді містить цілочисельне поле speaker. Модель ідентифікує спікерів за акустичними характеристиками та присвоює постійні ідентифікатори в межах сесії, але не визначає особу спікерів без додаткового кроку реєстрації профілю голосу.

Чи зберігаються аудіофайли після транскрипції? Аудіофайли завантажуються в Azure Blob Storage за допомогою тимчасового SAS URL і видаляються з тимчасового локального каталогу після завершення завантаження. Збереження об'єктів Blob в Azure Blob Storage залежить від політики життєвого циклу контейнера. За замовчуванням Audio Analyser не встановлює явну політику видалення, тому для робочого середовища рекомендується налаштувати правило короткого часу життя (TTL) (наприклад, видаляти об'єкти Blob, старші за 1 день) на порталі Azure.

Чи можна запустити NLP-аналіз без перекладу? Так. Переклад є необов'язковим етапом конвеєра, який контролюється прапорцем CLI --target-lang або випадаючим списком цільових мов у вебінтерфейсі. Якщо цільову мову не вибрано, конвеєр виконує лише перетворення мовлення на текст та аналіз Text Analytics.

Література

  1. Microsoft. Batch transcription overview — Azure AI services. Microsoft Learn, 2024. https://learn.microsoft.com/en-us/azure/ai-services/speech-service/batch-transcription
  2. Xiong, W. et al. "Achieving Human Parity in Conversational Speech Recognition." Microsoft Research Technical Report, 2016; оновлено у 2021 році. https://arxiv.org/abs/1610.05256
  3. Microsoft. What is Azure AI Language? Microsoft Learn, 2024. https://learn.microsoft.com/en-us/azure/ai-services/language-service/overview
  4. Microsoft. Azure AI Translator — Supported languages. Microsoft Learn, 2024. https://learn.microsoft.com/en-us/azure/ai-services/translator/language-support

Останній перегляд .

---

Останній перегляд .

Перепублікувати цю статтю

Скопіювати формат для Medium

# Інструмент аналізу, перекладу та аналітики мовлення на базі AI — Sebastien Rousseau

> Originally published at [https://sebastienrousseau.com/uk/2024-01-29-audio-analiz-pereklady-i-perspektyvy-na-shi/](https://sebastienrousseau.com/uk/2024-01-29-audio-analiz-pereklady-i-perspektyvy-na-shi/)

Дізнайтеся, як Audio Analyser на базі Azure AI перетворює розпізнавання мовлення, аналіз тексту та переклади на практичні аналітичні дані.

Read the full article on sebastienrousseau.com: https://sebastienrousseau.com/uk/2024-01-29-audio-analiz-pereklady-i-perspektyvy-na-shi/

Скопіювати формат для Mastodon

Інструмент аналізу, перекладу та аналітики мовлення на базі AI — Sebastien Rousseau

Дізнайтеся, як Audio Analyser на базі Azure AI перетворює розпізнавання мовлення, аналіз тексту та переклади на практичні аналітичні дані.

https://sebastienrousseau.com/uk/2024-01-29-audio-analiz-pereklady-i-perspektyvy-na-shi/

Копіювати відформатоване для LinkedIn

Інструмент аналізу, перекладу та аналітики мовлення на базі AI — Sebastien Rousseau

Дізнайтеся, як Audio Analyser на базі Azure AI перетворює розпізнавання мовлення, аналіз тексту та переклади на практичні аналітичні дані.

Ось ключові стратегічні висновки:

- Як працює Audio Analyser: огляд архітектури. Конвеєр складається з п'яти окремих етапів:.
- Azure Cognitive Services: механізм пакетної транскрипції. API пакетної транскрипції служби Azure Speech (/speechtotext/v3.0/transcriptions) приймає посилання на аудіофайл у сховищі Azure Blob Storage та JSON-об'єкт конфігурації.
- Обробка природної мови за допомогою Azure AI Language. Після транскрипції Audio Analyser надсилає розшифровку у відображуваному форматі до Azure AI Language через Python SDK azure-ai-textanalytics:.
- Багатомовна підтримка через Azure Translator. Azure Translator викликається після визначення мови, якщо користувач вибирає цільову мову.

Яким є підхід вашої організації до викликів, описаних у цій статті?

→ https://sebastienrousseau.com/uk/2024-01-29-audio-analiz-pereklady-i-perspektyvy-na-shi/

#АудіоАналізатор #AzureAi #SpeechToText #АналізАудіоданих #АналізТексту

Sebastien Rousseau | CC-BY-4.0
Цитувати цю статтю

Інструмент аналізу, перекладу та аналітики мовлення на базі AI — Sebastien Rousseau

Дізнайтеся, як Audio Analyser на базі Azure AI перетворює розпізнавання мовлення, аналіз тексту та переклади на практичні аналітичні дані.

BibTeX

@online{rousseau2024інструмент,
  author  = {Rousseau, Sebastien},
  title   = {{Інструмент аналізу, перекладу та аналітики мовлення на базі AI — Sebastien Rousseau}},
  year    = {2024},
  url     = {https://sebastienrousseau.com/uk/2024-01-29-audio-analiz-pereklady-i-perspektyvy-na-shi/},
  urldate = {2024}
}

RIS

TY  - GEN
AU  - Rousseau, Sebastien
TI  - Інструмент аналізу, перекладу та аналітики мовлення на базі AI — Sebastien Rousseau
PY  - 2024
UR  - https://sebastienrousseau.com/uk/2024-01-29-audio-analiz-pereklady-i-perspektyvy-na-shi/
ER  -

Vancouver

Rousseau S. Інструмент аналізу, перекладу та аналітики мовлення на базі AI — Sebastien Rousseau. sebastienrousseau.com. 2024 Jan 29. Available from: https://sebastienrousseau.com/uk/2024-01-29-audio-analiz-pereklady-i-perspektyvy-na-shi/

Chicago

Rousseau, Sebastien. "Інструмент аналізу, перекладу та аналітики мовлення на базі AI — Sebastien Rousseau." sebastienrousseau.com. January 29, 2024. https://sebastienrousseau.com/uk/2024-01-29-audio-analiz-pereklady-i-perspektyvy-na-shi/.

APA

Rousseau, S. (2024, January 29). Інструмент аналізу, перекладу та аналітики мовлення на базі AI — Sebastien Rousseau. sebastienrousseau.com. https://sebastienrousseau.com/uk/2024-01-29-audio-analiz-pereklady-i-perspektyvy-na-shi/

Перевидати цю статтю

Інструмент аналізу, перекладу та аналітики мовлення на базі AI — Sebastien Rousseau

Дізнайтеся, як Audio Analyser на базі Azure AI перетворює розпізнавання мовлення, аналіз тексту та переклади на практичні аналітичні дані.

Ця стаття поширюється за ліцензією Creative Commons Attribution 4.0 International. Перевидання вимагає посилання на канонічну URL-адресу.

Інструмент аналізу, перекладу та аналітики мовлення на базі AI — Sebastien Rousseau

Дізнайтеся, як Audio Analyser на базі Azure AI перетворює розпізнавання мовлення, аналіз тексту та переклади на практичні аналітичні дані.

Originally published at https://sebastienrousseau.com/uk/2024-01-29-audio-analiz-pereklady-i-perspektyvy-na-shi/ by Sebastien Rousseau.
Licensed under CC-BY-4.0.