Как ИИ для голосового логирования понимает естественный язык для отслеживания питания

Технический анализ NLP-пайплайна, стоящего за голосовым логированием питания — от автоматического распознавания речи и распознавания именованных сущностей до разрешения неоднозначностей, нормализации количеств и оценки уверенности.

Medically reviewed by Dr. Emily Torres, Registered Dietitian Nutritionist (RDN)

Сказать "Я только что съел два яйца-болтунца с чеддером на цельнозерновом тосте" в телефон и увидеть, как это превращается в полностью зарегистрированное блюдо с точными макросами, кажется почти волшебным. За этим бесшовным опытом стоит сложный пайплайн обработки естественного языка, который преобразует сырое аудио в структурированные данные о питательных веществах менее чем за две секунды. Понимание этого пайплайна объясняет, почему голосовое логирование стало одним из самых быстрых и точных способов отслеживания вашего питания.

ИИ для голосового логирования использует многоступенчатый NLP-пайплайн — автоматическое распознавание речи (ASR), классификацию намерений, распознавание именованных сущностей (NER), разрешение неоднозначностей, нормализацию количеств, сопоставление с базой данных и оценку уверенности — для преобразования устных описаний блюд в точные, проверенные записи о питательных веществах.

В этой статье мы подробно рассмотрим каждый этап этого пайплайна, объясним основную технологию и покажем, как одно произнесенное предложение становится полноценной записью о пище.

Семиступенчатый NLP-пайплайн для голосового логирования питания

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

В таблице ниже прослеживается одно произнесенное выражение через весь пайплайн:

Этап Процесс Вход Выход
1. ASR Распознавание речи Аудиоволна "два яйца-болтунца с чеддером на цельнозерновом тосте"
2. Распознавание намерения Классификация намерения пользователя Сырой транскрипт Намерение: food_logging (уверенность 0.97)
3. NER Извлечение пищевых сущностей Классифицированный транскрипт [яйца-болтунцы, чеддер, цельнозерновой тост]
4. Разрешение неоднозначностей Устранение неоднозначностей сущностей Сырые пищевые сущности [яйца-болтунцы (USDA: 01132), сыр чеддер (USDA: 01009), цельнозерновой хлеб, поджаренный (USDA: 20090)]
5. Нормализация количеств Стандартизация количеств "два", стандартная порция [2 крупных яйца (100г), 1 ломтик чеддера (28г), 2 ломтика тоста (56г)]
6. Сопоставление с базой данных Сопоставление с проверенными записями Разрешенные сущности + количества Полные профили питания с калориями, белками, жирами, углеводами, микроэлементами
7. Оценка уверенности Оценка уверенности Все выходы пайплайна Общая уверенность: 0.94 — запись автоматически

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

Этап 1: Автоматическое распознавание речи (ASR) — Преобразование аудио в текст

Первая задача — преобразовать сырую аудиоволну в текст. Современные системы ASR используют архитектуры на основе трансформеров — ту же семью моделей, что и большие языковые модели, такие как GPT и Claude, обученные на сотнях тысяч часов многоязычных речевых данных.

Как ASR работает для описаний пищи

Модели ASR обрабатывают аудио в три этапа:

  1. Извлечение признаков: Сырая аудиоволна преобразуется в спектрограмму, визуальное представление аудиочастот во времени. Затем спектрограмма делится на перекрывающиеся фреймы, обычно шириной 25 миллисекунд с шагом 10 миллисекунд.

  2. Обработка кодера: Трансформерный кодер обрабатывает фреймы спектрограммы, изучая контекстуальные связи между звуками. Модель понимает, например, что последовательность фонем для "чеддер" более вероятна в контексте речевых выражений о еде, чем "чеддер" или "чекер".

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

Современные системы ASR, такие как Whisper (OpenAI, 2022), достигают уровня ошибок слов ниже 5 процентов на чистой английской речи. Для специфической лексики о еде тонкая настройка на описания блюд может повысить точность еще больше, с уровнями ошибок ниже 3 процентов для общих терминов о еде.

Проблема словаря еды

Лексика еды представляет собой уникальные проблемы для ASR:

  • Заимствованные слова и иностранные термины: Слова, такие как "гноччи", "цадзики" и "асаи", следуют правилам произношения из своих языков-источников.
  • Омонимы: "Цветок" против "муки", "лук" против "утечки", "мидия" против "мускула".
  • Брендовые названия: Тысячи названий продуктов питания, которые могут не появляться в общей тренировочной базе данных.
  • Региональные произношения: "Пекан" произносится по-разному в разных англоговорящих регионах.

Тонкая настройка моделей ASR на наборах данных о еде — обычно содержащих от 5,000 до 50,000 часов речевых данных, связанных с едой — помогает решить эти проблемы, обучая модель статистическим паттернам, специфичным для описаний блюд.

Этап 2: Распознавание намерения — Это запрос на логирование пищи?

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

Намерение Пример высказывания Действие
food_logging "Я съел куриный салат Цезарь на обед" Направить в NER-пайплайн
water_logging "Я выпил два стакана воды" Записать потребление воды
вопрос "Сколько калорий в авокадо?" Направить к ИИ-ассистенту
исправление "На самом деле это был коричневый рис, а не белый" Изменить предыдущую запись
удаление "Удалить мое последнее блюдо" Удалить запись

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

Исследования Ассоциации вычислительной лингвистики (ACL, 2023) показали, что классификаторы намерений, специфичных для области, достигают F1-оценок выше 0.96 при тонкой настройке на всего лишь 10,000 размеченных примерах, что делает это одним из более надежных этапов в пайплайне.

Этап 3: Распознавание именованных сущностей (NER) — Извлечение пищевых сущностей

Распознавание именованных сущностей — это этап, на котором ИИ идентифицирует и извлекает конкретные продукты питания, количества и модификаторы из предложения. Это основная лингвистическая задача голосового логирования питания.

Типы сущностей в NER для еды

Модель NER, специфичная для еды, обучена распознавать несколько типов сущностей:

Тип сущности Тег Примеры
Продукт питания FOOD яйца-болтунцы, куриная грудка, коричневый рис
Количество QTY два, 200 граммов, чашка, половина
Модификатор MOD жареный, с чеддером, низкокалорийный, органический
Бренд BRAND Chobani, Barilla, Kirkland
Контекст блюда MEAL на завтрак, в качестве закуски, после тренировки
Контейнер CONT чаша с, тарелка с, стакан с

Для примера "два яйца-болтунца с чеддером на цельнозерновом тосте" модель NER выдает:

[QTY: два] [FOOD: яйца-болтунцы] [MOD: с чеддером] [MOD: на цельнозерновом тосте]

Компонентные описания пищи

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

Современные системы NER справляются с этим, используя схему тегирования BIO (Beginning, Inside, Outside), дополненную синтаксическим анализом. Синтаксический анализатор определяет синтаксические отношения между словами, так что "куриное жаркое" понимается как одно блюдо, в то время как "брокколи, болгарский перец и соевый соус" распознаются как его компоненты, а "жасминовый рис" идентифицируется как отдельное дополнение.

Бенчмарковая производительность на наборах данных NER для еды, таких как FoodBase (2019) и корпус TAC-KBP для пищевых сущностей, показывает F1-оценки от 0.89 до 0.93 для извлечения пищевых сущностей, при этом ошибки сосредоточены на редких или сильно региональных блюдах.

Этап 4: Разрешение неоднозначностей пищевых сущностей — Что именно вы имеете в виду?

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

Распространенные проблемы разрешения неоднозначностей

Неоднозначный термин Возможные интерпретации Сигнал разрешения
Чипсы Картофельные чипсы (США), картошка фри (Великобритания), тортилья-чипсы, банановые чипсы Локализация пользователя, предшествующие модификаторы, контекст блюда
Печенье Песочное печенье (Великобритания), хлеб, похожий на скон (Юг США), крекер (части Азии) Локализация пользователя, сопутствующие продукты
Джем Желатиновый десерт (США), фруктовый джем (Великобритания) Контекст блюда (на тосте против как десерт)
Пудинг Кремовый десерт (США), запеченное блюдо, такое как йоркширский пудинг (Великобритания) Контекст блюда, модификаторы
Кукуруза Кукуруза на початке, консервированная кукуруза, кукурузная мука, попкорн Модификаторы, контекст приготовления
Тост Ломтик хлеба, тост в честь чего-либо Классификация намерения (уже разрешено)

Разрешение неоднозначностей зависит от нескольких сигналов:

  1. Локализация пользователя: Язык и региональные настройки приложения предоставляют сильный приоритет. Австралийский пользователь, говоря "чипсы", с большей вероятностью имеет в виду толстые картофельные фри; американский пользователь с большей вероятностью имеет в виду тонкие картофельные чипсы.
  2. Контекстуальные модификаторы: "Чипсы с кетчупом" предполагают картошку фри; "чипсы с сальсой" предполагают тортилья-чипсы; "пакет чипсов" предполагает упакованные картофельные чипсы.
  3. История блюд: Если пользователь регулярно логирует блюда в британском стиле, модель разрешения неоднозначностей соответственно корректирует свои приоритеты.
  4. Сходство в встраивании: Встраивания на основе трансформеров располагают продукты в семантическом пространстве, где контекстуально схожие продукты группируются вместе, позволяя модели выбрать интерпретацию, которая лучше всего соответствует окружающему языковому контексту.

Этап 5: Нормализация количеств — Преобразование естественного языка в граммы

Люди почти никогда не описывают количества пищи в граммах. Они говорят "чашка", "горсть", "большая чаша", "два ломтика" или просто ничего не говорят (подразумевая одну стандартную порцию). Нормализация количеств преобразует эти естественные описания в стандартизированные метрические количества, которые могут быть сопоставлены с записями в базе данных.

Распространенные выражения количеств и их нормализованные значения

Естественное выражение Контекст еды Нормализованное значение Источник
Чашка Вареный рис 186г Стандартная справка USDA
Чашка Молоко 244г (244мл) Стандартная справка USDA
Горсть Смесь орехов 28–30г Консенсус исследований питания
Горсть Черника 40–50г Оценка порции USDA
Ломтик Хлеб 25–30г Среднее значение по отрасли
Ломтик Пицца (большая, 14") 107г Стандартная справка USDA
Чаша Злаки с молоком 240–300г всего Справочная величина FDA
Кусок Куриная грудка 120–174г Стандартные порции USDA
Капля Оливковое масло 5–7мл Кулинарный стандарт
Брызга Соевый соус 5мл Кулинарный стандарт

Сложность заключается в том, что "чашка" риса (186г) имеет совершенно другой вес, чем "чашка" шпината (30г) или "чашка" муки (125г). Нормализация количеств должна учитывать не только единицы измерения, но и саму еду.

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

Когда количество не указано — как в "Я ел яйца-болтунцы и тост" — система по умолчанию использует стандартные порции USDA, которые представляют собой количество, обычно потребляемое за один прием пищи.

Этап 6: Сопоставление с базой данных — Сопоставление сущностей с проверенными данными о питательных веществах

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

Процесс сопоставления

Сопоставление с базой данных использует комбинацию:

  1. Точное сопоставление строк: Прямой поиск названия продукта в базе данных. Быстро и надежно для общих продуктов.
  2. Неявное сопоставление строк: Алгоритмы расстояния Левенштейна и аналогичные обрабатывают вариации написания, сокращенные названия и незначительные ошибки транскрипции. "Скрамблед эггс" все равно соответствует "яйцам-болтунцам".
  3. Семантический поиск: Встраивания предложений на основе трансформеров позволяют сопоставлять по смыслу, а не по точному написанию. "Яйцо с солнечной стороной" соответствует записи в базе данных для "жареного яйца, а не болтунца", даже если слова почти не совпадают.
  4. Иерархическое резервирование: Если точного совпадения продукта не существует, система переходит к ближайшей родительской категории. "Специальный мясной рулет бабушки" будет сопоставлен с "мясным рулетом, домашним" в базе данных USDA.

Качество базовой базы данных критично на этом этапе. Проверенная база данных о питательных веществах с записями, полученными из государственных таблиц составов продуктов (USDA FoodData Central, EFSA, FSANZ) и проверенными диетологами, обеспечивает гораздо более надежные результаты, чем базы данных, созданные пользователями, где любой может добавлять записи.

Nutrola использует проверенную базу данных о питательных веществах с записями, перекрестно проверенными с официальными данными о составе продуктов, что означает, что окончательные значения калорий и макросов, возвращаемые пайплайном голосового логирования, основаны на лабораторно проанализированных данных о питательных веществах, а не на оценках, собранных от пользователей. В сочетании с сканированием штрих-кодов, охватывающим более 95 процентов упакованных продуктов, этап сопоставления с базой данных достигает высоких показателей совпадения как для цельных продуктов, так и для упакованных товаров.

Этап 7: Оценка уверенности — Когда логировать, а когда спрашивать

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

Пороги уверенности и действия

Общая уверенность Действие Пример сценария
0.95–1.00 Логировать автоматически Общее блюдо, четкие количества, точное совпадение с базой данных
0.80–0.94 Логировать с запросом на подтверждение Небольшая неоднозначность в количестве или варианте пищи
0.60–0.79 Показать 2–3 лучших варианта для выбора пользователем Неоднозначное название пищи или несколько возможных совпадений
Ниже 0.60 Попросить пользователя переформулировать или предоставить больше деталей Неясная речь, неизвестная еда или сильно неоднозначное описание

Оценка уверенности — это не одно число, а взвешенная комбинация подоценок:

  • Уверенность ASR: Насколько уверенной была модель распознавания речи? (Измеряется по апостериорной вероятности декодированной последовательности)
  • Уверенность NER: Насколько четко были идентифицированы пищевые сущности? (Измеряется по F1 границам сущностей)
  • Уверенность разрешения неоднозначностей: Было ли явное предпочтение среди возможных интерпретаций? (Измеряется по вероятностному разрыву между первыми двумя кандидатами)
  • Уверенность совпадения с базой данных: Насколько близким было совпадение с проверенной записью базы данных? (Измеряется по косинусному сходству встраиваний)

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

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

Весь описанный выше пайплайн был преобразован с появлением архитектур трансформеров (Vaswani et al., 2017) и больших языковых моделей (LLMs). Более старые системы голосового логирования использовали отдельные, независимо обученные модели для каждого этапа. Современные системы все чаще используют унифицированные модели трансформеров, которые обрабатывают несколько этапов одновременно.

Ключевые достижения

  • End-to-end ASR: Модели ASR на основе трансформеров, такие как Whisper, обрабатывают аудио непосредственно в текст без промежуточных представлений фонем, что снижает распространение ошибок.
  • Контекстуальное NER: Предобученные языковые модели, такие как BERT и его варианты, понимают термины о еде в контексте, значительно улучшая извлечение сущностей для компонентных описаний.
  • Разрешение неоднозначностей без обучения: Большие языковые модели могут разрешать неоднозначности терминов о еде, которые они никогда не видели в обучающих данных, используя свои обширные знания о мире. Модель, которая прочитала миллионы рецептов и описаний еды, понимает, что "чипсы и гуакамоле" означают тортилья-чипсы с гуакамоле, даже не будучи явно обученной на этой фразе.
  • Коррекция в разговорном формате: LLM позволяют естественные последующие разговоры. Если ИИ регистрирует "белый рис", а пользователь говорит "на самом деле это был цветной рис", модель понимает это как исправление и обновляет запись соответственно.

ИИ-ассистент Nutrola использует эти возможности, позволяя пользователям не только регистрировать блюда голосом, но и задавать последующие вопросы, запрашивать изменения и получать информацию о питательных веществах через естественный разговор.

Реальная точность: Как голосовое логирование сравнивается с другими методами

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

Метод логирования Средняя точность калорий Среднее время на запись Усилие пользователя
Ручной текстовый поиск 85–90% (зависит от выбора пользователя) 45–90 секунд Высокое
Сканирование штрих-кодов 97–99% (только упакованные продукты) 5–10 секунд Низкое
Логирование по фотографии (ИИ) 85–92% (варьируется по сложности еды) 3–8 секунд Низкое
Голосовое логирование (ИИ) 88–94% (варьируется по четкости описания) 5–15 секунд Очень низкое

Преимущество точности голосового логирования заключается в богатстве естественного языка. Фотография не может различить цельное молоко и обезжиренное, но голосовое описание может. Фотография испытывает трудности с многослойными блюдами, такими как буррито, но устное описание — "куриное буррито с черными бобами, сальсой, сметаной и гуакамоле" — предоставляет ИИ явную информацию об ингредиентах.

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

Конфиденциальность и обработка на устройстве

Данные о голосе по своей природе являются личными. Современные системы голосового логирования решают вопросы конфиденциальности с помощью нескольких архитектурных решений:

  • ASR на устройстве: Преобразование речи в текст происходит на устройстве пользователя, поэтому сырое аудио никогда не покидает телефон.
  • Передача только текста: Только транскрибированный текст отправляется на облачные серверы для NER и сопоставления с базой данных.
  • Отсутствие хранения аудио: Аудиозаписи удаляются сразу после транскрипции.
  • Зашифрованный пайплайн: Все данные, передаваемые между этапами обработки, используют сквозное шифрование.

Эти меры обеспечивают, чтобы удобство голосового логирования не шло вразрез с конфиденциальностью. Nutrola обрабатывает голосовые данные с этими принципами конфиденциальности, синхронизируя результаты питания с Apple Health и Google Fit без раскрытия сырых аудиоданных.

Часто задаваемые вопросы

Насколько точно голосовое логирование пищи по сравнению с ручным вводом продуктов?

Голосовое логирование пищи достигает 88–94 процентов точности калорий в среднем, что сопоставимо или немного лучше, чем ручной текстовый поиск (85–90 процентов). Преимущество голоса заключается в том, что пользователи, как правило, предоставляют более подробные описания естественным образом — включая методы приготовления, приправы и конкретные ингредиенты — что дает ИИ больше информации для работы, чем простой текстовый запрос.

Может ли ИИ голосового логирования понимать описания пищи с несколькими элементами в одном предложении?

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

Что происходит, когда ИИ не уверен в том, что я сказал?

Система использует многоуровневую оценку уверенности. Если общая уверенность падает ниже 0.80, вы увидите запрос на подтверждение, показывающий лучшее понимание ИИ. Ниже 0.60 приложение попросит вас уточнить — например, "Вы имели в виду картофельные чипсы или картошку фри?" Этот подход минимизирует как ложные записи, так и ненужные прерывания.

Работает ли голосовое логирование в оффлайн-режиме?

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

Как голосовое логирование обрабатывает акценты и не носителей английского языка?

Текущие модели ASR, такие как Whisper, обучены на разнообразных многоязычных речевых данных, охватывающих широкий спектр акцентов. Уровни ошибок слов для акцентированного английского обычно на 2–5 процентных пунктов выше, чем для носителей языка, но специфическая лексика о еде — которая в основном стандартизирована — обычно распознается более надежно, чем общая речь. Тонкая настройка на аудио в области еды дополнительно сокращает разрыв в точности.

Какая технология NLP поддерживает голосовое логирование пищи?

Пайплайн использует модели на основе трансформеров на почти каждом этапе. Автоматическое распознавание речи использует трансформеры кодировщика-декодера (аналогичные архитектуре Whisper). Распознавание намерений и NER используют тонко настроенные модели семейства BERT. Разрешение неоднозначностей и сопоставление с базой данных используют трансформеры предложений для семантического сходства. Большие языковые модели обеспечивают коррекцию в разговорном формате и понимание новых описаний пищи без обучения.

Могу ли я исправить запись о голосовом логировании после факта?

Да. Системы голосового логирования с помощниками на базе LLM поддерживают естественные коррекции. Вы можете сказать "заменить рис на цветной рис" или "убрать сыр из моего последнего блюда", и ИИ распознает намерение исправления и обновит существующую запись, а не создаст новую. ИИ-ассистент Nutrola поддерживает этот рабочий процесс редактирования в разговорном формате.

Насколько быстро происходит голосовое логирование от речи до записи?

Общая задержка для типичного описания блюда составляет 1.5–3 секунды. ASR занимает 0.3–0.8 секунды для короткого высказывания. NER и разрешение неоднозначностей добавляют 0.2–0.5 секунды. Сопоставление с базой данных и оценка уверенности занимают еще 0.3–0.7 секунды. Сетевая задержка составляет остальную часть времени. Результат — опыт логирования, который кажется почти мгновенным.

Является ли голосовое логирование лучше, чем логирование по фотографиям для отслеживания калорий?

Ни один из методов не является универсально лучшим. Голосовое логирование превосходит, когда вы можете точно описать ингредиенты — для домашних блюд, смешанных блюд и продуктов, которые выглядят похоже, но различаются по питательным веществам (например, цельное молоко против обезжиренного). Логирование по фотографиям превосходит для визуально отличительных продуктов, где размер порции является основной переменной. Использование обоих методов вместе обеспечивает наиболее полное отслеживание, поэтому Nutrola поддерживает логирование по фотографиям, голосом, штрих-кодам и вручную в одном приложении, начиная всего с 2.50 евро в месяц с трехдневной бесплатной пробой.

Готовы трансформировать отслеживание питания?

Присоединяйтесь к тысячам тех, кто изменил свой путь к здоровью с Nutrola!