Вопрос или проблема
Я ищу голосового помощника, который работает офлайн и без голосовой части. Может показаться странным хотеть помощника без голоса, но я могу объяснить. Мой разговорный английский очень плох, мне нужен голосовой помощник с текстовым вводом. Я пробовал bestee, но она немного ограничена.
В итоге, мне нужно:
- Работает офлайн
- Есть текстовый ввод
- Возможность задавать новые команды или
- Возможность задавать альтернативные фразы для команд
- Отсутствие полноэкранной рекламы (меня не беспокоят баннеры без звука)
- Если есть реклама, возможность заплатить, чтобы отключить её
Кто-нибудь знает что-то подобное?
То, что вы ищете, похоже на стандартный интерфейс компьютера. Как, например: командная оболочка.
Вы даёте ей команды, она делает то, что вам нужно.
Единственное заметное отличие — это ввод на человеческом языке. Но я бы сказал, что это больше помеха, чем функция. Потому что это затемняет, какие возможности она действительно предлагает, и вводит неясности, которые приводят к недопониманию.
Я имею в виду общую цель оболочки. То, для чего она была изобретена.
Так что для обычного повседневного использования или существующих возможностей я не имею в виду весь сложный беспорядок стандартной оболочки на стандартной операционной системе типа Unix (как Android), не волнуйтесь. 🙂
Так что на Android ваш лучший выбор, вероятно, будет это Termux с очень простым каталогом, содержащим множество простых для ввода команд, чтобы скрыть упомянутый выше беспорядок, в который реальная система может его превратить.
Особенно в сочетании с Tasker и инструментом “Intent browser”, чтобы знать, какие вещи в приложениях вы (через Termux API или Tasker) действительно можете контролировать.
Я бы настроил это так:
- Установите Termux, Termux:API и Termux:Tasker (предпочтительно из F-Droid).
- Запустите
pkg install termux-api
внутри Termux. - Запустите
mkdir ~/bin; termux-setup-storage; termux-setup-package-manager
- Отредактируйте
.bashrc
с помощью командыnano ~/.bashrc
и добавьте строкуecho "Available commands:"; ls -c "$HOME/bin/"
в конец. Это превратит Termux в инструмент на основе меню, который автоматически покажет доступные команды, которые вы затем можете ввести. Если хотите видеть список после каждой команды, вместо этого вставьте строкуPS1='\nAvailable commands:\n$(ls -C "$HOME/bin/")\n'"$PS1"
на его место. - Для удобства выполните
nano ~/new-command; chmod +x ~/new-command
и вставьте следующее, затем сохраните:
#! /usr/bin/bash
read -p "Command name (without spaces or /): " command
echo "#! /usr/bin/bash" > "$HOME/bin/$command"
nano "$HOME/bin/$command"
chmod +x "$HOME/bin/$command"
echo "Available commands:"; ls -1 "$HOME/bin/"
Теперь у вас есть то, что вам нужно:
- Работает офлайн (но может подключаться к интернету по запросу).
- Есть текстовый ввод. “Доступные команды”, плюс любая команда, которую может предложить Linux.
- Возможность задавать новые команды. С помощью
new-command
. - Возможность задавать альтернативные фразы для команд. (Добавьте строку
alias newcommand="oldcommand"
в конец вашего.bashrc
, илиln -s ~/bin/oldcommand
~/bin/newcommand` когда параметры не нужны) - Абсолютно отсутствие рекламы. И это бесплатно.
- Конечно, вы можете поддержать разработчиков Termux, если и только если вы решите это сделать. 🙂
Я понимаю, что это может считаться несоответствующим вопросу. Но я согласен, что это не соответствует только в тех моментах, которые сделали бы его хуже. (Произвольная обработка человеческого языка.)
Кроме того: я не считаю new-command
менее естественным, чем Привет, Siri, можешь определить для меня новую команду?
. Что было бы раздражающим с текстовым вводом в любом случае. 🙂
Вы также легко можете добавить интернет-поиск или звонки по телефону, текстовые сообщения, управление устройствами и т.д., и открытие файлов с этим, используя такие вещи, как termux-api
и xdg-open
.
В самом деле, люди в наши дни всегда видят командную оболочку как “это сложная вещь”, но вы должны помнить, что она действительно разработана как легкий в использовании инструмент для обычных пользователей. Просто несколько десятилетий назад от людей ожидалось, что они будут умнее, и это действительно считалось легким. 🙂 Также, просто потому, что вы можете писать в ней то, что не могут прочитать люди, не значит, что вы обязаны это делать. “apropos download” — это допустимая команда на обычных системах Linux. Но это приятно, что вы можете делать практически все. Потому что если вам это нужно, вам это нужно. И “простой” инструмент вроде Siri (или что-либо “умное”) просто падает в обморок в этой ситуации. 🙂
Ответ или решение
Для решения задачи создания голосового ассистента на Android, который работает офлайн и может принимать текстовые команды, можно использовать подход, описанный ниже.
Теория
Голосовые ассистенты чаще всего ассоциируются с голосовым вводом, однако их функциональность может быть расширена за счет текстового ввода, что особенно актуально, если у пользователя возникают трудности с произношением. Важные элементы таких систем: возможность работы в офлайн-режиме, текстовый ввод и поддержка пользовательских команд.
Пример
На платформе Android возможен альтернативный подход с использованием терминала Termux, который превращает устройство в полноценную UNIX-систему. Termux способен работать офлайн и поддерживает текстовый ввод. Он не только предоставляет доступ к большому количеству команд, но и позволяет создавать новые команды.
Применение
-
Установка Termux и необходимых пакетов:
- Скачайте и установите Termux, Termux:API и Termux:Tasker через F-Droid.
- Выполните команду
pkg install termux-api
в Termux, чтобы установить API. - Настройте терминал для хранения пользовательских команд, выполнив команды:
mkdir ~/bin termux-setup-storage
-
Настройка интерфейса команд:
- Отредактируйте файл
.bashrc
с помощьюnano ~/.bashrc
и добавьте:PS1='\nДоступные команды:\n$(ls -C "$HOME/bin/")\n'"$PS1"
- Это позволит после каждой команды видеть список доступных команд.
- Отредактируйте файл
-
Создание новых команд:
- Создайте новый файл команд
new-command
, выполнив:nano ~/new-command chmod +x ~/new-command
- Добавьте в него:
#! /usr/bin/bash read -p "Command name (without spaces or /): " command echo "#! /usr/bin/bash" > "$HOME/bin/$command" nano "$HOME/bin/$command" chmod +x "$HOME/bin/$command" echo "Доступные команды:"; ls -1 "$HOME/bin/"
- Создайте новый файл команд
-
Альтернативные фразы для команд:
- Для создания альтернативных фраз для команд используйте
alias
или создайте символическую ссылку:ln -s ~/bin/oldcommand ~/bin/newcommand
- Для создания альтернативных фраз для команд используйте
-
Интеграция с другими возможностями устройства:
- Используйте
termux-api
для расширения функциональности: открытие URL, управление устройством и другие задачи в офлайн-режиме.
- Используйте
Этот подход позволяет создать эффективную текстовую систему команд, работающую офлайн, которая удовлетворяет требованиям пользователя без появления полноэкранной рекламы и с возможностью поддержки разработчиков. Такой подход позволяет пользователю легко адаптировать систему под свои нужды, создавая кастомизированные команды для выполнения различных задач на Android.