Чтение текста в Linux 2025
- Вариант без установки.
Ставим расширение Read Alout: A text to speech voice reader — настрой язык — подгрузи файл pdf. -
sudo apt update && sudo apt install -y alsa-utils poppler-utils curl
# 1. Устанавливаем утилиты для звука и PDF
sudo apt update && sudo apt install -y alsa-utils poppler-utils curl
# 2. Создаем папку
mkdir -p ~/.local/share/piper cd ~/.local/share/piper
# 3. Скачиваем движок Piper (Linux x86_64)
curl -L -o piper.tar.gz https://github.com/rhasspy/piper/releases/download/2023.11.14-2/piper_linux_x86_64.tar.gz tar -xzf piper.tar.gz rm piper.tar.gz
# 4. Скачиваем ИРИНУ (Medium)
curl -L -o irina.onnx https://huggingface.co/rhasspy/piper-voices/resolve/main/ru/ru_RU/irina/medium/ru_RU-irina-medium.onnx curl -L -o irina.onnx.json https://huggingface.co/rhasspy/piper-voices/resolve/main/ru/ru_RU/irina/medium/ru_RU-irina-medium.onnx.json
# 5. Скачиваем РУСЛАНА (Medium)
curl -L -o ruslan.onnx https://huggingface.co/rhasspy/piper-voices/resolve/main/ru/ru_RU/ruslan/medium/ru_RU-ruslan-medium.onnx curl -L -o ruslan.onnx.json https://huggingface.co/rhasspy/piper-voices/resolve/main/ru/ru_RU/ruslan/medium/ru_RU-ruslan-medium.onnx.jsonmousepad ~/.bashrc -> прокрутите в самый низ и вставьте этот код:
# --- PIPER TTS FUNCTIONS ---# Путь к папке с пайпером
PIPER_DIR="$HOME/.local/share/piper"# Функция чтения (принимает имя модели и текст/файл)
_piper_read() {
local model_name=$1
shift
local input=$1# Параметры aplay (22050Hz, 16bit, mono - стандарт для Piper Medium)
local audio_out="aplay -r 22050 -f S16_LE -t raw -q"if [[ -f "$input" ]]; then
# Если это файл
if [[ "$input" == *.pdf ]]; then
echo "? Читаю PDF ($model_name)... (Ctrl+C для отмены)"
# pdftotext -layout сохраняет структуру, sed убирает лишние переносы для плавности
pdftotext -layout "$input" - | sed ':a;N;$!ba;s/\n/ /g' | "$PIPER_DIR/piper/piper" --model "$PIPER_DIR/$model_name.onnx" --output_raw | $audio_out
else
echo "? Читаю текст ($model_name)..."
cat "$input" | "$PIPER_DIR/piper/piper" --model "$PIPER_DIR/$model_name.onnx" --output_raw | $audio_out
fi
else
# Если это просто фраза
echo "$*" | "$PIPER_DIR/piper/piper" --model "$PIPER_DIR/$model_name.onnx" --output_raw | $audio_out
fi
}# Команда для Ирины
irina() {
_piper_read "irina" "$@"
}# Команда для Руслана
ruslan() {
_piper_read "ruslan" "$@"
}Читать PDF книгу в баше:
irina book.pdf
ruslan book.pdf -
Читать из буфера обмена (если стоит xclip):
xclip -o | ruslan -
Сказать фразу (для теста):
irina Привет, как твои дела?