Чтение текста в Linux 2025

  1. Вариант без установки.
    Ставим расширение Read Alout: A text to speech voice reader — настрой язык — подгрузи файл pdf.

  2.  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.json

    mousepad ~/.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

  3. Читать из буфера обмена (если стоит xclip):
    xclip -o | ruslan

  4. Сказать фразу (для теста):
    irina Привет, как твои дела?