Разработка AI-системы Speech Analytics для анализа записей звонков

Проектируем и внедряем системы искусственного интеллекта: от прототипа до production-ready решения. Наша команда объединяет экспертизу в машинном обучении, дата-инжиниринге и MLOps, чтобы AI работал не в лаборатории, а в реальном бизнесе.
Показано 1 из 1 услугВсе 1566 услуг
Разработка AI-системы Speech Analytics для анализа записей звонков
Сложная
~2-4 недели
Часто задаваемые вопросы
Направления AI-разработки
Этапы разработки AI-решения
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1218
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1161
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    853
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1047
  • image_logo-advance_0.png
    Разработка логотипа компании B2B Advance
    561
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    825

Разработка AI-системы Speech Analytics для анализа записей звонков

Speech Analytics обрабатывает 100% записей звонков, извлекая структурированную информацию: темы, тональность, ключевые слова, паттерны поведения, compliance-нарушения. Заменяет выборочный ручной аудит на полное автоматическое покрытие.

Архитектура Speech Analytics платформы

Recording → STT → NLP Pipeline → Feature Extraction → Storage → Analytics
              ↓        ↓               ↓                              ↓
         Transcript  Entities      Topics/Categories              Dashboard
                    Sentiment      Compliance flags               Reports
                    Intent         Script adherence               Alerts

NLP pipeline пост-обработки

from dataclasses import dataclass
from typing import Optional

@dataclass
class CallAnalysis:
    call_id: str
    transcript: str
    duration: float

    # NLP результаты
    topics: list[str]
    entities: dict          # имена, суммы, даты, продукты
    sentiment_timeline: list[dict]  # тональность по сегментам
    overall_sentiment: str

    # Compliance
    compliance_flags: list[dict]    # нарушения стандартов
    required_phrases_present: dict  # обязательные фразы

    # Качество
    script_adherence_score: float
    professionalism_score: float
    resolution_status: str          # resolved | unresolved | escalated

    # Ключевые моменты
    key_moments: list[dict]         # важные моменты в записи
    action_items: list[str]         # задачи по итогам

class SpeechAnalyticsPipeline:
    async def analyze_call(self, transcript: dict) -> CallAnalysis:
        full_text = self.format_transcript(transcript["turns"])

        # Параллельный запуск всех анализаторов
        results = await asyncio.gather(
            self.extract_topics(full_text),
            self.extract_entities(full_text),
            self.analyze_sentiment_timeline(transcript["turns"]),
            self.check_compliance(full_text, transcript),
            self.evaluate_script_adherence(full_text),
            self.extract_key_moments(transcript),
        )

        return CallAnalysis(
            call_id=transcript["call_id"],
            transcript=full_text,
            duration=transcript["duration"],
            topics=results[0],
            entities=results[1],
            sentiment_timeline=results[2]["timeline"],
            overall_sentiment=results[2]["overall"],
            compliance_flags=results[3],
            required_phrases_present=results[4]["required_phrases"],
            script_adherence_score=results[4]["score"],
            professionalism_score=results[4]["professionalism"],
            resolution_status=self.detect_resolution(full_text),
            key_moments=results[5],
            action_items=await self.extract_action_items(full_text)
        )

Тематический анализ (Topic Modeling)

async def extract_topics(text: str) -> list[str]:
    response = await client.chat.completions.create(
        model="gpt-4o-mini",
        messages=[{
            "role": "system",
            "content": """Определи 1-3 основные темы звонка.
            Выбирай из: оплата, доставка, технические проблемы, возврат,
            жалоба, консультация, продажа, информация.
            Или предложи свою тему. JSON: ["тема1", "тема2"]"""
        }, {"role": "user", "content": text[:3000]}],
        response_format={"type": "json_object"}
    )
    return json.loads(response.choices[0].message.content).get("topics", [])

Compliance мониторинг

REQUIRED_PHRASES = {
    "greeting": ["добрый день", "здравствуйте", "меня зовут"],
    "verification": ["подтвердите", "назовите", "последние 4 цифры"],
    "farewell": ["до свидания", "хорошего дня", "спасибо за обращение"],
    "gdpr_consent": ["вы соглашаетесь", "запись ведётся", "качество обслуживания"],
}

FORBIDDEN_PHRASES = [
    "это не моя проблема", "я не знаю", "не могу помочь",
    "позвоните позже", "перезвоните завтра"
]

def check_compliance(transcript: str) -> dict:
    violations = []
    required_present = {}

    for category, phrases in REQUIRED_PHRASES.items():
        found = any(p in transcript.lower() for p in phrases)
        required_present[category] = found
        if not found:
            violations.append({"type": "missing_required", "category": category})

    for phrase in FORBIDDEN_PHRASES:
        if phrase in transcript.lower():
            violations.append({"type": "forbidden_phrase", "phrase": phrase})

    return {"violations": violations, "required_present": required_present}

Массовый поиск по паттернам

async def search_calls_by_pattern(
    pattern: str,
    date_range: tuple,
    operator_ids: list = None
) -> list[dict]:
    """Полнотекстовый поиск по транскриптам звонков"""
    query = {
        "text": {"$regex": pattern, "$options": "i"},
        "date": {"$gte": date_range[0], "$lte": date_range[1]}
    }
    if operator_ids:
        query["operator_id"] = {"$in": operator_ids}

    return await db.call_analyses.find(query).to_list(100)

Сроки: базовый Speech Analytics с 5 анализаторами — 6–8 недель. Полная платформа с дашбордом — 3–4 месяца.