Как исправить ошибку в синтезе

Пытался сделать программу на Python (в виртуальной среде):
синтез речи через модели Silero для Torch

Вот код:

import torch 
import sounddevice
import time

language = "ru"
model_id = "ru_v3"
sample_rate = 48000
speaker = "baya"
put_accent = True
put_yo = True
device = torch.device("cpu")
text = "Привет"

model, empty = torch.hub.load(repo_or_dir='snakers4/silero-models',
                          model='silero_tts',
                          language=language,
                          speaker=model_id)
model.to(device)

audio = model.apply_tts(text = text,
                        speaker = speaker,
                        sample_rate = sample_rate,
                        put_accent = put_accent,
                        put_yo = put_yo)

print(text)

sounddevice.play(audio, sample_rate)
time.sleep(len(audio) / sample_rate + 0.1)
sounddevice.stop()

Запустив 1-ый раз программу и у меня создался файл:
latest_silero_models.yml
и вылетела ошибка… Я подумал так и должно
Запускаю 2-ой раз файл уже не создается, а читается (как я понял)
и вылезает ошибка (не помню эта та же самая ошибка или нет):

Using cache found in /home/methodius/.cache/torch/hub/snakers4_silero-models_master
Traceback (most recent call last):
  File "Pre-release-0.1/main.py", line 14, in <module>
    model, empty = torch.hub.load(repo_or_dir='snakers4/silero-models',
  File "/home/methodius/Projects/Python/VoiceAssistant/.virtual/lib/python3.8/site-packages/torch/hub.py", line 399, in load
    model = _load_local(repo_or_dir, model, *args, **kwargs)
  File "/home/methodius/Projects/Python/VoiceAssistant/.virtual/lib/python3.8/site-packages/torch/hub.py", line 428, in _load_local
    model = entry(*args, **kwargs)
  File "/home/methodius/.cache/torch/hub/snakers4_silero-models_master/src/silero/silero.py", line 88, in silero_tts
    model = imp.load_pickle("tts_models", "model")
  File "/home/methodius/Projects/Python/VoiceAssistant/.virtual/lib/python3.8/site-packages/torch/package/package_importer.py", line 249, in load_pickle
    result = unpickler.load()
  File "/usr/local/lib/python3.8/pickle.py", line 1212, in load
    dispatch[key[0]](self)
  File "/usr/local/lib/python3.8/pickle.py", line 1253, in load_binpersid
    self.append(self.persistent_load(pid))
  File "/home/methodius/Projects/Python/VoiceAssistant/.virtual/lib/python3.8/site-packages/torch/package/package_importer.py", line 227, in persistent_load
    loaded_reduces[reduce_id] = func(self, *args)
  File "/home/methodius/Projects/Python/VoiceAssistant/.virtual/lib/python3.8/site-packages/torch/jit/_script.py", line 344, in unpackage_script_module
    cpp_module = torch._C._import_ir_module_from_package(
RuntimeError: Unknown qengine

Системные характеристики:
Linux Manjaro Kde 21.2.6
Python 3.8.13
Torch 10.0.0+cpu
Torchaudio 0.10.0

Синтаксическая ошибка на Android-устройствах — одна из старейших и наиболее распространенных ошибок, с которыми сталкиваются владельцы Android-устройств. Ошибка обычно появляется при попытке установить приложение на мобильный телефон. Сообщение о ней выглядит так: «Синтаксическая ошибка. Ошибка при синтаксическом анализе пакетах». Понимать это нужно следующим образом: «приложение не может быть установлено на вашем телефоне из-за проблемы синтаксического анализа»

Если вы продолжите попытки установки выбранного софта путем внесения изменений в manifest-файл приложения, то вряд ли избавитесь от ошибки. Искусственно снижать требования программы к системе — не лучшая идея. Сегодня мы решили досконально разобраться в вероятных причинах появления ошибки и предложить вам несколько способов ее несложного и безопасного устранения.

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

  1. Внесение изменений в manifest-файл приложения (например, изменение требований к версии ОС Android).
  2. Повреждение или неполная закачка .apk файла.
  3. Загрузка и установка сторонних приложений из неизвестных источников при отсутствии разрешения на подобные действия в настройках смартфона.
  4. Несовместимость версии ОС Android или аппаратного обеспечения смартфона с требованиями устанавливаемого приложения.
  5. Блокировка установки любых сторонних приложений настройками безопасности.

Способ 1. Проверка manifest-файла приложения

Это решение предназначено только для пользователей, которые пользуются программами для внесения изменений в manifest-файлы приложений. Таким образом, если вы один из них и сделали какие-либо изменения в файл приложения AndroidManifest.xml, вам нужно попытаться восстановить его в исходное состояние «по умолчанию». Прежде чем что-то предпринимать, убедитесь в том, что название .apk было изменено. Например, если первоначальный .apk был назван original.apk, и вы переименовали его original1.apk то вам, возможно, придется переименовать его обратно, присвоив исходное имя, которым является «Original.apk».

После того, как переименование выполнено, вновь попытайтесь установить приложение на ваш телефон и посмотреть, пропала ли ошибка при синтаксическом анализе пакета.

Возможно, возникла проблема с кодом приложения. Диагностировать конкретную причину в данном случае очень сложно, и универсальных методов решения проблемы не существует — здесь либо придется разбираться долго и серьезно, либо пойти по пути наименьшего сопротивления, воспользовавшись альтернативным способом установки выбранного приложения (например, с другого устройства).

Способ 2: Разрешить установку приложений из неизвестных источников

В соответствии с требованиями безопасности Android-смартфон может запрещать устанавливать сторонние приложения и софт из неизвестных источников, позволяя делать это только из Google Play Маркет. Запрет связан с тем, что установка сторонних приложений из неизвестных источников может повредить ваш телефон.

Так что, если вы пытаетесь установить файл .apk, то можете столкнуться с «ошибкой при синтаксическом анализе пакета». Чтобы исправить ошибку и обойти запрет, нужно разрешить установку приложений из неизвестных источников. Соответствующий пункт имеется в настройках безопасности телефона.

  • Перейдите в раздел «Настройки»;

  • Далее «Безопасность»;

  • Найти «Неизвестные источники» и галочкой разблокировать загрузку. Если смартфон выдаст запрос, подтвердите свое решение, нажав OK.

Вернитесь в папку, где находится файл .apk. Нажмите на него и установите приложение.

Способ 3: Включить отладку по USB

Включение отладки по USB не является действительно необходимым для установки Android-приложений с помощью файла .apk. Но некоторые пользователи утверждают, что решили проблему с синтаксической ошибкой на Андроид именно этим способом.

Чтобы включить отладку по USB, необходимо включить режим разработчика на своем устройстве. Для этого выполните следующие действия:

  • Зайдите в «Настройки»;

  • Найдите раздел «О телефоне» и зайдите в него;

  • Прокрутите вниз до пункта «Номер сборки», нажмите на него 7 раз (после седьмого касания вы должны увидеть на экране «Теперь вы разработчик»)

  • Затем вернитесь в раздел «Настройки», прокрутите вниз и найдите «Меню для разработчика»;

  • Найдите там раздел «Отладка по USB» и активируйте процесс.

Процедура включения отладки по USB для некоторых устройств может иметь свои особенности. Ознакомиться со спецификой действий более подробно можно в следующей статьей.

Способ 4: Отключить антивирус

Синтаксическая ошибка также может произойти, если ваша антивирусная программа блокирует установку. Большинство антивирусов пытаются блокировать установку приложений, которые на их взгляд могут выглядеть ненадежными или подозрительными. Так что, если вы пытаетесь установить .apk файл, причина появления ошибки, возможно, кроется в том, что ваше антивирусное приложение блокирует файл .apk, предотвращая установку «подозрительного» софта.

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

Способ 5: Поврежденный или не полностью загруженный APK-файл

Ошибка также может произойти из-за поврежденного файла .apk. Попробуйте загрузить свежую версию APK-файла и установить приложение. Возможно, это поможет устранить ошибку. Кроме того, убедитесь, что вы скачали полный файл — для этого достаточно сравнить размеры предлагаемого и загруженного файла. Частичная загрузка файла .apk непременно приведет к ошибке синтаксического анализа во время установки приложения.

Способ 6: Несовместимость приложения

Некоторые программы не поддерживают устаревшие версии операционной системы Android. Ряд приложений несовместим с устаревшей аппаратной частью устройства. В обоих случаях при попытке установки приложения вы получаете сообщение об ошибке синтаксического анализа пакета Android. Например, когда вы пытаетесь установить приложение, которое требует Android 8 Oreo и выше, на смартфон с Android 7 Nougat. Чтобы не попасть в подобную ситуацию, внимательно читайте описание приложения на Google Play Маркет, особенно в той его части, где приведены системные требования.

Сегодня мы рассмотрели ряд способов решения синтаксической ошибки и выяснили причины ее возникновения. Если вы сталкивались с ней на своем устройстве и успешно преодолели, расскажите, пожалуйста, о своем опыте в комментариях. Возможно, именно ваш метод станет спасительным для кого-то из пользователей.

Открытость операционной системы Android позволяет устанавливать приложения разными способами. Это можно делать как через специализированные приложения вроде Google Play, так и через APK-файлы, то есть вручную. И в тот момент, когда пользователь выбирает второй вариант установки, при попытке открыть APK на экране появляется ошибка при синтаксическом анализе пакета. Проблема является довольно частой, но, к счастью, поддается решению. Давайте посмотрим, что мы можем сделать при возникновении синтаксической ошибки.

Ошибка при синтаксическом анализе пакета на Android — как исправить. Чаще всего ошибка появляется на старых версиях Андроид. Фото.

Чаще всего ошибка появляется на старых версиях Андроид

Содержание

  • 1 Что такое синтаксический анализ пакета
  • 2 Как исправить синтаксический анализ пакета
    • 2.1 Как переименовать файл
    • 2.2 Файл поврежден
    • 2.3 Старая версия Андроид
    • 2.4 Как переместить файл
  • 3 Где скачать APK

Что такое синтаксический анализ пакета

Сначала разберемся, с чем мы имеем дело, и какое отношение к Android имеет синтаксис, знакомый нам по школьному курсу русского языка. В лингвистике синтаксической ошибкой называют нарушение связи слов в предложении. В программировании это понятие имеет схожее значение и, если не углубляться в подробности, ошибка синтаксического анализа на Андроид — проблема, вызванная отсутствием совместимости между действующей конфигурацией операционной системы и APK (пакетом).

⚡ Подпишись на Androidinsider в Дзене, где мы публикуем эксклюзивные материалы

Подобного рода неполадки чаще всего дают о себе знать на устройствах со старой версией Android. Но это не значит, что исправить ошибку синтаксического анализа пакета можно только обновлением Андроид. Просто старые версии операционной системы имеют ряд особенностей, которые не позволяют установить каждый APK, несмотря на заявленную совместимость.

Как исправить синтаксический анализ пакета

Как исправить синтаксический анализ пакета. Попробуйте установить приложение через Google Play. Фото.

Попробуйте установить приложение через Google Play

Поскольку ошибка при синтаксическом анализе пакета Андроид возникает в процессе ручной установки APK, в первую очередь рекомендую инсталлировать приложение через магазин Google Play. Там все файлы проверяются на вирусы, а несовместимый софт даже не отображается в списке. Если ваше приложение отсутствует в магазине, попробуйте установить APK в соответствии с рекомендациями, изложенными здесь. Если и это не поможет — действуйте по нашей инструкции, и решение точно найдется.

❗ Поделись своим мнением или задай вопрос в нашем телеграм-чате

Как переименовать файл

Как я уже сказал, ошибка при синтаксическом анализе обычно возникает на смартфонах со старым Android. Особенностью устройств на ранних версиях операционной системы является то, что они не могут прочитать содержимое APK-файла с большим количеством символов. Тот же Android 7 вводят в ступор лишние точки в названии. Следовательно, для решения проблемы нужно переименовать файл:

  1. Найдите проблемный APK.
  2. Выделите файл.
  3. Нажмите кнопку «Еще».
  4. Выберите опцию «Переименовать».
  5. Присвойте файлу короткое имя, состоящее из латинских символов.

Как переименовать файл. Присвойте файлу имя попроще. Фото.

Присвойте файлу имя попроще

С высокой долей вероятности после внесения изменений в название файла ошибка синтаксического анализа пакета при установке исчезнет. Если нет — воспользуйтесь следующим вариантом решения проблемы.

Файл поврежден

Также неполадки при синтаксическом анализе пакета бывают вызваны повреждением APK. Что я имею в виду? Во-первых, файл мог загрузиться не до конца. Естественно, в таком случае установочный пакет будет не полным, и смартфон не сможет прочитать его содержимое. Почему это произошло — другой вопрос. Либо в процессе загрузки прервалось интернет-соединение, либо на смартфоне закончилась память. Что делать в таком случае — читайте тут.

🔥 Загляни в телеграм-канал Сундук Али-Бабы, где мы собрали лучшие товары с АлиЭкспресс

Еще не стоит исключать вероятность изначального повреждения файла. То есть APK мог быть залит на сайт, откуда вы его скачивали, в неисправном виде. Единственная рекомендация в такой ситуации — скачать APK-файл через другой источник. В конце я приведу несколько примеров, откуда загрузить APK бесплатно и безопасно.

Старая версия Андроид

Старая версия Андроид. Возможно, стоит задумать об обновлении ОС или покупке нового смартфона. Фото.

Возможно, стоит задумать об обновлении ОС или покупке нового смартфона

Конечно, проблема могла возникнуть и по причине устаревшей версии Android. Да, подавляющее большинство приложений работает и на Android 7, но с каждым обновлением системные требования становятся более жесткими. Поэтому настоятельно рекомендую проверить версию Андроид на телефоне, в чем вам поможет отдельный материал. Затем сопоставьте ее с требованиями, указанными на странице приложения.

Отмечу также, что многие люди жалуются на ошибку при синтаксическом анализе пакета на телевизоре. Если на вашем ТВ-приемнике установлена операционная система Android TV, то при установке APK обязательно проверяйте совместимость. Приложение изначально должно быть предназначено для телевизионного Андроид.

Как переместить файл

Если при синтаксическом анализе пакета возникла неполадка, убедитесь, что сам APK-файл находится во внутренней памяти телефона. Конечно, приложения можно устанавливать и с карты памяти. Однако, если вы покупали дешевую MicroSD-карту, такая возможность будет заблокирована из-за низкой скорости записи или повреждения файловой системы. Для решения проблемы нужно просто переместить файл во внутреннюю память:

  1. Выделите APK-файл.
  2. Нажмите кнопку «Переместить».
  3. Укажите любую папку на внутреннем накопителе и подтвердите перемещение.

Как переместить файл. Устанавливайте приложения через APK, которые хранятся во внутренней памяти. Фото.

Устанавливайте приложения через APK, которые хранятся во внутренней памяти

Наконец, выделю еще несколько факторов, которые теоретически могли стать причиной появления ошибки при синтаксическом анализе пакета Android. Это конфликт с одним из установленных на телефоне приложений и блокировка неизвестных APK антивирусом. Обязательно учитывайте данные факторы.

⚡ Подпишись на Androidinsider в Пульс Mail.ru, чтобы получать новости из мира Андроид первым

Где скачать APK

Итак, у APK ошибка при синтаксическом анализе пакета очень часто возникает по причине неисправного или поврежденного файла. Минимизировать риски помогают специальные веб-магазины, откуда можно бесплатно скачать APK:

  • APKMirror;
  • APKPure;
  • APK Store.

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

SyntaxError — это ошибка, которая легко может ввести в ступор начинающего программиста. Стоит забыть одну запятую или не там поставить кавычку и Python наотрез откажется запускать программу. Что ещё хуже, по выводу в консоль сложно сообразить в чём дело. Выглядят сообщения страшно и непонятно. Что с этим делать — не ясно. Вот неполный список того, что можно встретить:

  • SyntaxError: invalid syntax
  • SyntaxError: EOL while scanning string literal
  • SyntaxError: unexpected EOF while parsing

Эта статья о том, как справиться с синтаксической ошибкой SyntaxError. Дочитайте её до конца и получите безотказный простой алгоритм действий, что поможет вам в трудную минуту — ваш спасательный круг.

Работать будем с программой, которая выводит на экран список учеников. Её код выглядит немного громоздко и, возможно, непривычно. Если не всё написанное вам понятно, то не отчаивайтесь, чтению статьи это не помешает.


students = [
    ['Егор', 'Кузьмин'],
    ['Денис', 'Давыдов'],
]

for first_name, last_name in students:
    label = 'Имя ученика: {first_name} {last_name}'.format(
        first_name = first_name
        last_name = last_name
    )

    print(label)

Ожидается примерно такой результат в консоли:

$ python script.py
Имя ученика: Егор Кузьмин
Имя ученика: Денис Давыдов

Но запуск программы приводит к совсем другому результату. Скрипт сломан:

$ python script.py
  File "script.py", line 9
    last_name = last_name
            ^
SyntaxError: invalid syntax

Ошибки в программе бывают разные и каждой нужен свой особый подход. Первым делом внимательно посмотрите на вывод программы в консоль. На последней строчке написано SyntaxError: invalid syntax. Если эти слова вам не знакомы, то обратитесь за переводом к Яндекс.Переводчику:

SyntaxError: недопустимый синтаксис
SyntaxError: неверный синтаксис

Первое слово SyntaxError Яндекс не понял. Помогите ему и разделите слова пробелом:

Syntax Error: invalid syntax
Синтаксическая ошибка: неверный синтаксис

Теория. Синтаксические ошибки

Программирование — это не магия, а Python — не волшебный шар. Он не умеет предсказывать будущее, у него нет доступа к секретным знаниями, это просто автомат, это программа. Узнайте как она работает, как ищет ошибки в коде, и тогда легко найдете эффективный способ отладки. Вся необходимая теория собрана в этом разделе, дочитайте до конца.

SyntaxError — это синтаксическая ошибка. Она случается очень рано, еще до того, как Python запустит программу. Вот что делает компьютер, когда вы запускаете скрипт командой python script.py:

  1. запускает программу python
  2. python считывает текст из файла script.py
  3. python превращает текст программы в инструкции
  4. python исполняет инструкции

Синтаксическая ошибка SyntaxError возникает на четвёртом этапе в момент, когда Python разбирает текст программы на понятные ему компоненты. Сложные выражения в коде он разбирает на простейшие инструкции. Вот пример кода и инструкции для него:

person = {'name': 'Евгений'}

Инструкции:

  1. создать строку 'Евгений'
  2. создать словарь
  3. в словарь добавить ключ 'name' со значением 'Евгений'
  4. присвоить результат переменной person

SyntaxError случается когда Python не смог разбить сложный код на простые инструкции. Зная это, вы можете вручную разбить код на инструкции, чтобы затем проверить каждую из них по отдельности. Ошибка прячется в одной из инструкций.

1. Найдите поломанное выражение

Этот шаг сэкономит вам кучу сил. Найдите в программе сломанный участок кода. Его вам предстоит разобрать на отдельные инструкции. Посмотрите на вывод программы в консоль:

$ python script.py
  File "script.py", line 9
    last_name = last_name
            ^
SyntaxError: invalid syntax

Вторая строчка сообщает: File "script.py", line 9 — ошибка в файле script.py на девятой строчке. Но эта строка является частью более сложного выражения, посмотрите на него целиком:

label = 'Имя ученика: {first_name} {last_name}'.format(
    first_name = first_name
    last_name = last_name
)

«Девман» — авторская методика обучения программированию. Готовим к работе крутых программистов на Python. Станьте программистом, пройдите продвинутый курс Python.

2. Разбейте выражение на инструкции

В прошлых шагах вы узнали что сломан этот фрагмент кода:

label = 'Имя ученика: {first_name} {last_name}'.format(
    first_name = first_name
    last_name = last_name
)

Разберите его на инструкции:

  1. создать строку 'Имя ученика: {first_name} {last_name}'
  2. получить у строки метод format
  3. вызвать функцию с двумя аргументами
  4. результат присвоить переменной label

Так выделил бы инструкции программист, но вот Python сделать так не смог и сломался. Пора выяснить на какой инструкции нашла коса на камень.

Теперь ваша задача переписать код так, чтобы в каждой строке программы исполнялось не более одной инструкции из списка выше. Так вы сможете тестировать их по отдельности и облегчите себе задачу. Так выглядит отделение инструкции по созданию строки:

# 1. создать строку
template = 'Имя ученика: {first_name} {last_name}'

label = template.format(
    first_name = first_name
    last_name = last_name
)

Сразу запустите код, проверьте что ошибка осталась на прежнему месте. Приступайте ко второй инструкции:

# 1. создать строку
template = 'Имя ученика: {first_name} {last_name}'

# 2. получить у строки метод
format = template.format

label = format(
    first_name = first_name
    last_name = last_name
)

Строка format = template.format создает новую переменную format и кладёт в неё функцию. Да, да, это не ошибка! Python разрешает класть в переменные всё что угодно, в том числе и функции. Новая переменная переменная format теперь работает как обычная функция, и её можно вызвать: format(...).

Снова запустите код. Ошибка появится внутри format. Под сомнением остались две инструкции:

  1. вызвать функцию с двумя аргументами
  2. результат присвоить переменной label

Скорее всего, Python не распознал вызов функции. Проверьте это, избавьтесь от последней инструкции — от создания переменной label:

# 1. создать строку
template = 'Имя ученика: {first_name} {last_name}'

# 2. получить у строки метод
format = template.format

# 3. вызвать функцию
format(
    first_name = first_name
    last_name = last_name
)

Запустите код. Ошибка снова там же — внутри format. Выходит, код вызова функции написан с ошибкой, Python не смог его превратить в инструкцию.

3. Проверьте синтаксис вызова функции

Теперь вы знаете что проблема в коде, вызывающем функцию. Можно помедитировать еще немного над кодом программы, пройтись по нему зорким взглядом еще разок в надежде на лучшее. А можно поискать в сети примеры кода для сравнения.

Запросите у Яндекса статьи по фразе “Python синтаксис функции”, а в них поищите код, похожий на вызов format и сравните. Вот одна из первых статей в поисковой выдаче:

  • Функции в Python

Уверен, теперь вы нашли ошибку. Победа!

Представьте, в деревне одной из республик Приволжского округа пропало электричество. Гульбадиян Алхазовна живет здесь уже 75 лет, с рождения. Она звонит в энергетическую компанию — узнать, когда дадут свет.

На звонок отвечает телефонный робот — он справляется с обращениями быстрее живых операторов. Но женщина говорит с акцентом и причитает, поэтому бот ничего не понимает и все равно переводит звонок на человека. А с «Дадатой» робот ответит на вопрос самостоятельно и сэкономит время операторам поддержки.

Результаты при использовании «Дадаты»

Энергетическая компания доставляет электричество людям и бизнесу

Компания-герой этой статьи доставляет электроэнергию от электростанций до потребителей: домов и офисов. Поэтому в квартирах работают плиты и стиральные машины, а на улицах горят фонари и светофоры.

На обращения клиентов отвечают роботы

Электроэнергию иногда отключают:

  • из-за аварий. Например, если в грозу порвало провод на линии электропередач;
  • планово. Например, чтобы заменить старые провода.

Чтобы узнать, когда включат свет, люди обращаются в контактный центр энергетической компании:

  • по телефону. На звонки отвечает робот — вроде тех, которые звонят из банков. Клиент называет адрес, а бот рассказывает, когда включат электричество;
  • через чат-бота в «Телеграме». Люди текстом пишут адрес, а бот подсказывает сроки отключения электроэнергии.

Из-за ошибок в адресах боты не справлялись с запросами клиентов и нагружали живых операторов

В энергетической компании ведут собственную базу адресов Башкортостана. Если в доме отключили или планируют отключить электроэнергию, сроки вносят в базу — напротив адреса:

С помощью базы боты подсказывают клиентам, когда включат электричество: находят нужный адрес, узнают сроки отключения и сообщают человеку. Оператор-человек действует аналогично.   

Если клиент называет адрес голосом по телефону, речь сперва синтезируют в текст. Для этого используют сервис Yandex SpeechKit, который распознает голос в 70% случаев. Это хороший показатель, ведь в контактный центр звонят в том числе люди из деревень и разговаривают с акцентом. 

Иногда при распознавании речи в адресах возникают ошибки или появляются лишние части. Поэтому раньше бот не находил адрес в базе и переводил звонок на живого оператора. Человека подключали, даже если «Яндекс» путал одну букву в адресе.

Например, клиент невнятно сказал «бульвар Ибрагимова». Yandex разобрал фразу как «бульвар Ибрагимовна». В базе нет такой улицы, поэтому бот не находил адрес.

Или человек наговорил: «улица Ленина дом один на всей улице нет света». Yandex SpeechKit честно синтезировал речь в текст. Бот не понимал, какие слова во фразе лишние, и не находил адрес в базе.

Чат-боту в «Телеграме» не нужно распознавать речь, потому что клиенты присылают адреса сразу текстом. При этом люди часто ошибаются в названиях городов и улиц.

Например, пишут «Стерлетамаг» вместо «Стерлитамак» или «ул. Революцинная» вместо «Революционная».

Из-за ошибок бот не находил адреса в базе и предлагал позвонить в контактный центр:

Из-за ошибок в текстовых адресах чат-бот переводил обращения в колл-центр

Если и телефонный бот не справится с адресом, звонок переведут на человека

Сначала ошибки в синтезе речи исправляли своими силами

В компании ввели механизм адресных замен: отслеживали частые опечатки и автоматически заменяли их на текст без ошибок.

Скажем, сотрудники заметили, что Yandex SpeechKit всегда распознаёт «Уха» вместо «Уфа». Тогда в алгоритме бота прописывали: если встретишь слово «уха», замени на «Уфа».

Но с единичными ошибками автозамены не помогали, поэтому от механизма отказались.

Yandex SpeechKit распознал «Яркеево» вместо «Нижнеяркеево». Но вдруг он аналогичным образом распознает и «Верхнеяркеево». Вводить автозамену нельзя.

Теперь «Дадата» исправляет ошибки в адресах и снижает нагрузку на операторов службы поддержки

Чтобы автоматически исправлять ошибки в адресах, в процесс добавили «API стандартизации адресов» «Дадаты».

«Дадата» получает адреса из чат-бота или после синтеза речи в текст, исправляет опечатки и убирает лишние слова. «Чистые» адреса возвращает ботам. Так роботы без проблем находят сроки отключения электроэнергии в базе данных и обходятся без участия человека.

«Яндекс» преобразовал речь в текст с ошибкой — «Ибрагимовна 10 кв 3» → «Дадата» исправит ошибку — «б-р Ибрагимова, д. 10, кв. 3».

Человек наговорил: «улица Ленина дом один на всей улице нет света». «Дадата» вычленит адрес из сказанного — «ул. Ленина, д. 1».

С «Дадатой» чат-бот без проблем находит сроки отключения электроэнергии

Чат-бот уточняет, правильно ли «Стандартизация» разобрала адрес. Если все чинно, отвечает

Также «Дадата» разбирает адрес на составляющие: город, улицу, номер дома и номер квартиры. Это полезно в функциональности подписок на уведомления: если клиент оставит адрес до дома, бот предупредит об отключении электроэнергии. С «Дадатой» робот понимает, какие части адреса человек не указал, и подсказывает, чем дополнить данные. 

Чат-бот подсказывает: чем стоит дополнить адрес

Раньше робот просто сообщал: «Адрес не найден». А теперь говорит конкретно — «Указанный адрес не содержит номер дома»

А еще к чат-боту подключили API-метод «Дадаты» «Обратное геокодирование». Человеку достаточно отправить боту геопозицию — кликом по кнопке в меню робота. «Дадата» в момент определит адрес по координатам, и чат-бот найдет сроки отключения электроэнергии.

«Дадата» определяет адрес по геокоординатам

Клиенты не пишут названия городов и улиц, поэтому не ошибаются

С «Дадатой» боты энергетической компании самостоятельно обрабатывают на 30% больше запросов. Это снижает нагрузку на операторов поддержки.

Я самостоятельно подключил к ботам «Стандартизацию». Это заняло около 12 часов.  

Тимур, ведущий программист энергетической компании

Подключить API стандартизации адресов

«Стандартизация» автоматически проверит адреса, которые уже лежат в базе. Сервис:

  • исправляет ошибки в адресах;
  • приводит адреса к единому формату;
  • разбивает адреса по отдельным полям (регион, город, улица, дом, квартира);
  • рассчитывает корректный индекс по данным Почты России;
  • определяет координаты;
  • показывает округ и район города, ближайшее метро, площадь и стоимость квартиры;
  • достает коды КЛАДР, ФИАС, ОКАТО, ОКТМО и ИФНС.

Цена — 15 копеек за запрос. Например, базу в 1000 адресов «Стандартизация» очистит за 150 ₽.

Понравилась статья? Поделить с друзьями:
  • Как исправить ошибку в сзв м лишний сотрудник
  • Как исправить ошибку в симс 4 ошибка инициализации при
  • Как исправить ошибку в сзв м добавить сотрудника
  • Как исправить ошибку в симс 4 wicked whims
  • Как исправить ошибку в сертификате пфдо