Елена Булыгина предлагает Вам запомнить сайт «Ленусик»
Вы хотите запомнить сайт «Ленусик»?
Да Нет
×
Прогноз погоды

Основная статья: Python developer

15 интересных каналов Telegram для программистов

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

Tproger

Количество подписчиков: 60000+.

Частота обновлений: 2–3 записи в день.

Тематика: новости, статьи, рейтинги, обсуждения.

Маловероятно, что в современном рунете хоть один программист не знает про ресурс tproger. Здесь есть всё: от советов «как написать идеальный код» до рассуждений «какую мышку выбрать». Обновления не слишком частые, зато информативные. Пару раз в день зайти на канал —то, что доктор тимлид прописал.

GeekBrains

Количество подписчиков: 3 200 +.

Частота обновления: 1–5 записей в день.

Тематика: новости, статьи.

На канале в режиме реального времени отображается всё, что происходит у нас на ресурсе. Здесь появляются ссылки на свежие статьи в блоге и СМИ, анонсы вебинаров и крупных IT-событий, уникальные скидки на обучение и просто полезные материалы. Если вы учитесь программированию или только планируете присоединиться к нам — обязательно подписывайтесь.

Руки

Количество подписчиков: 2900+.

Частота обновлений: 1 запись в день.

Тематика: IT-новости.

Канал начинал с гиковских статей про разработку, а сейчас публикует в основном новости, рейтинги и подборки. Привлекает качеством контента — никаких обновлений ради обновлений.

TechSparks

Количество подписчиков: 37800+.

Частота обновлений: 2–3 записи в день.

Тематика: IT-новости.

О чём. Канал-агрегатор IT-новостей, которые не увидишь на первых строках крупных ресурсов. Наполнение зависит от автора, Андрея Себранта, — и это сказывается на регулярности публикаций и диапазоне задействованных ресурсов.

Front End Dev

Количество подписчиков: 20200+.

Частота обновлений: 2–5 записей в день.

Тематика: объявления о вакансиях, статьи по фронтенду.

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

UniLecs

Количество подписчиков: 19100+.

Частота обновлений: 1–2 записи в день.

Тематика: задачи по программированию, статьи и лекции по Computer Science.

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

TechRocks

Количество подписчиков: 16300+.

Частота обновлений: 1–3 записи в день.

Тематика: статьи и новости про IT.

95% записей данного канала — ссылки на статьи портала techrocks.ru с кратким описанием. Подойдёт тем, кому не нужен специализированный канал по своему языку или направлению. Здесь можно найти и общие новости, и конкретные кейсы: например, по использованию Python в VS Code или приёмам CSS при оформлении сайта.

Machine Learning World

Количество подписчиков: 6700+.

Частота обновлений: 1–2 записи в день.

Тематика: новости ИИ.

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

Библиотека программиста

Количество подписчиков: 69600+.

Частота обновлений: 1–4 записи в день.

Тематика: статьи и обзоры книг.

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

StartAndroid

Количество подписчиков: 7900+.

Частота обновлений: 1 запись в день.

Тематика: всё про Android-разработку.

Новости, статьи, релизы, вебинары и просто выступления про Android. Если вы причастны к мобильной разработке на этой платформе, подписаться на этот канал действительно стоит. Так вы точно будете знать тренды и каждый уголок интерфейса любого целевого устройства.

Microsoft Developer Community

Количество подписчиков: 3800+.

Частота обновлений: 1 запись в день.

Тематика: всё про разработку под и от Microsoft.

Здесь авторы ежедневно выкатывают порцию свежих новостей о релизах каких-нибудь продуктов, анонсах крупных конференций или официальные обзоры средств разработки Microsoft.

iOS dev

Количество подписчиков: 6200+.

Частота обновлений: 1–3 записи в день.

Тематика: всё об iOS-разработке.

Завершаем список каналов про платформы «яблочным» сообществом iOS dev. Здесь собрано много информации по прикладной части разработки — например, обзоры возможностей кнопок и ссылок. Есть и сильное новостное направление: анонсы и ссылки на видео с конференций, релизы продуктов и другие статьи.

Мой круг

Количество подписчиков: 4000+.

Частота обновлений: 2–5 записей в час.

Тематика: вакансии и HR-статьи.

Портал «Мой круг» оперативно сообщает здесь о свежих вакансиях в IT-индустрии и даёт советы, как быстро и успешно найти работу. При помощи чат-бота можно установить фильтр и видеть только сообщения из интересных вам рубрик.

Remote IT

Количество подписчиков: 17900+.

Частота обновлений: 1–5 записей в день.

Тематика: вакансии.

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

GitHub Repos

Количество подписчиков: 4800+.

Частота обновления: 2–5 записей в день.

Тематика: ссылки на исходники.

Здесь публикуются самые заметные релизы, которые появляются в хранилищах GitHub — полезные и удобные приложения, которые можно использовать. А ещё таким образом вы получаете возможность заглянуть в качественный код. В записях указывается оценка релиза и используемый язык. 

На десерт — несколько полезных чатов:

DBA RU

Количество участников: 1700+.

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

ГОРИ

Количество участников: 2000+.

Чат о разработке игр. Будет интересно подписаться не только игроделам, но и тем, кто тестирует компьютерные игры. Много узнаете про типовые баги и будете получать полезные ссылки на частные творения.

Big Data Ru

Количество участников: 3800+.

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

Web Structure

Количество участников: 4000+.

Изначально чат был посвящён вёрстке сайтов, но сейчас о веб-разработке в целом. Хотите знать, есть ли смысл учиться на PHP-разработчика? Вам сюда. Хотите рекомендаций, что доработать в сайте, чтобы подороже его продать? Заходите. Просто за советом по коду? Вы знаете, что делать.

Coding RU

Количество участников: 1 300 +.

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

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

Пройти обучение

25 ноя 19, 14:23
0 0
Статистика 1
Показы: 1 Охват: 0 Прочтений: 0

Как написать говорящую программу на Python

Озвучиваем системное время и любой текст в Windows и Linux. Используем pytts3, espeak, RHVoice, gTTS, Speech dispatcher. 

Синтез речи может пригодиться вам в работе над мобильным помощником, умным домом на Raspberry Pi, искусственным интеллектом, игрой, системой уведомлений и звуковым интерфейсом. Голосовые сообщения донесут информацию до пользователя, которому некогда читать текст. Кроме того, если программа умеет озвучивать свой интерфейс, она доступна незрячим и слабовидящим.  Есть системы управления компьютером без опоры на зрение. Одна из самых популярных — NVDA (NonVisual Desktop Access) — написана на Python с добавлением C++.

Давайте посмотрим, как использовать text-to-speech (TTS) в Python и подключать синтезаторы голоса к вашей программе. Эту статью я хотела назвать «Говорящая консоль», потому что мы будем писать консольное приложение для Windows, Linux, а потенциально — и MacOS. Потом решила выбрать более общее название, ведь от наличия GUI суть не меняется. На всякий случай поясню: консоль в данном случае — терминал Linux или знакомая пользователям Windows командная строка.

Цель выберем очень скромную: создадим приложение, которое будет каждую минуту озвучивать текущее системное время.

Готовим поляну

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

Чтобы компьютер заговорил, нужны: 

  • голосовой движок (синтезатор речи) с поддержкой нужных нам языков,
  • голоса дикторов для этого движка.

В Windows есть штатный речевой интерфейс Microsoft Speech API (SAPI). Голоса к нему выпускают, помимо Microsoft, сторонние производители: Nuance Communications, Loquendo, Acapela Group, IVONA Software. 

Есть и свободные кроссплатформенные голосовые движки: 

  • RHVoice от Ольги Яковлевой  — имеет четыре голоса для русского языка (один  мужской и три женских), а также поддерживает татарский, украинский, грузинский, киргизский, эсперанто и английский. Работает в Windows, GNU/Linux и Android.
  • eSpeak (не обновляется с 2014 года) и его ответвление — eSpeak NG — c поддержкой более 100 языков и диалектов, включая даже латынь. NG означает New Generation  — «новое поколение». Эта версия разрабатывается сообществом с тех пор, как автор оригинальной eSpeak перестал выходить на связь. Система озвучит ваш текст в Windows, Android, Linux, Mac, BSD. При этом старый eSpeak стабилен в ОС Windows 7 и XP, а eSpeak NG совместим с Windows 8 и 10.

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

По качеству голоса RHVoice неплох и к нему быстро привыкаешь, а вот eSpeak очень специфичен и с акцентом. Зато eSpeak запускается на любом утюге и подходит как вариант на крайний случай, когда ничто другое не работает или не установлено у пользователя.

Установка речевых движков, голосов и модулей в Windows 

С установкой синтезаторов в Windows проблем возникнуть не должно. Единственный нюанс — для русского голоса eSpeak и eSpeak NG нужно скачать расширенный словарь произношения. Распакуйте архив в подкаталог espeak-data или espeak-ng-data в директории программы. Теперь замените старый словарь новым: переименуйте ru_dict-48 в ru_dict, предварительно удалив имеющийся файл с тем же именем (ru_dict).

Теперь установите модули pywin32, python-espeak и py-espeak-ng, которые потребуются нам для доступа к возможностям TTS:

pip install pywin32 python-espeak pyttsx3 py-espeak-ng

Если у вас на компьютере соседствуют Python 2 и 3, здесь и далее пишите «pip3», а при запуске скриптов  — «python3».

Установка eSpeak(NG) в Linux

Подружить «пингвина» с eSpeak, в том числе NG, можно за минуту:

sudo apt-get install espeak-ng python-espeak

pip3 install py-espeak-ng pyttsx3

Дальше загружаем и распаковываем словарь ru_dict с официального сайта:

wget http://espeak.sourceforge.net/data/ru_dict-48.zip

unzip ru_dict-48.zip

Теперь ищем адрес каталога espeak-data (или espeak-ng-data) где-то в /usr/lib/ и перемещаем словарь туда. В моем случае команда на перемещение выглядела так:

sudo mv ru_dict-48 /usr/lib/i386-linux-gnu/espeak-data/ru_dict

Обратите внимание: вместо «i386» у вас в системе может быть «x86_64...» или еще что-то. Если не уверены, воспользуйтесь поиском:

find /usr/lib/ -name "espeak-data"

Готово! 

RHVoice в Linux

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

Смысл в том, что мы клонируем git-репозиторий и собираем необходимые компоненты через scons.

Для экспериментов в Windows и Linux я использую одни и те же русские голоса: стандартный ‘ru’ в eSpeak и Aleksandr в RHVoice.

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

Прежде чем обращаться к движку, убедитесь, что он установлен и работает правильно. 

Проверить работу eSpeak в Windows проще всего через GUI  — достаточно запустить TTSApp.exe в папке с программой. Дальше открываем список голосов, выбираем eSpeak-RU, вводим текст в поле редактирования и жмем на кнопку Speak.

Обратиться к espeak можно и из терминала. Базовые консольные команды для eSpeak и NG совпадают — надо только добавлять или убирать «-ng» после «espeak»:

espeak -v ru -f D:\my.txt

espeak-ng -v en "The Cranes are Flying"

echo "Да, это от души. Замечательно. Достойно восхищения" |RHVoice-test -p Aleksandr

Как нетрудно догадаться, первая команда с ключом -f  читает русский текст из файла. Чтобы в Windows команда espeak подхватывалась вне зависимости от того, в какой вы директории, добавьте путь к консольной версии eSpeak (по умолчанию — C:\Program Files\eSpeak\command_line) в переменную окружения Path. Вот как это сделать.

Библиотека pyttsx3

PyTTSx3 — удобная кроссплатформенная библиотека для реализации TTS в приложениях на Python 3. Использует разные системы синтеза речи в зависимости от текущей ОС:

  • в Windows — SAPI5,
  • в Mac OS X — nsss,
  • в Linux и на других платформах — eSpeak.

Это очень удобно: пишете код один раз и он работает везде. Кстати, eSpeak NG поддерживается наравне с исходной версией.

А теперь примеры!

Просмотр голосов

У каждого голоса есть несколько параметров, с которыми можно работать:

  • id (идентификатор в операционной системе), 
  • name (имя),
  • languages (поддерживаемые языки),
  • gender (пол),
  • age (возраст).

Первый вопрос всегда в том, какие голоса установлены на стороне пользователя. Поэтому создадим скрипт, который покажет все доступные голоса, их имена и ID. Назовем файл, например, list_voices.py:

import pyttsx3

tts = pyttsx3.init() # Инициализировать голосовой движок.

У активного движка есть стандартный параметр ‘voices’, где содержится список всех доступных этому движку голосов. Это нам и нужно

voices = tts.getProperty('voices')

 # Перебрать голоса и вывести параметры каждого

for voice in voices:

    print('=======')

    print('Имя: %s' % voice.name)

    print('ID: %s' % voice.id)

    print('Язык(и): %s' % voice.languages)

    print('Пол: %s' % voice.gender)

    print('Возраст: %s' % voice.age)

Теперь открываем терминал или командную строку, переходим в директорию, куда сохранили скрипт, и запускаем list_voices.py.

 Результат будет примерно таким:

В Linux картина будет похожей, но с другими идентификаторами. 

Как видите, в Windows для большинства установленных голосов MS SAPI заполнены только «Имя» и ID. Однако этого хватит, чтобы решить следующую нашу задачу: написать код, который выберет русский голос и что-то им произнесет.

Например, у голоса RHVoice Aleksandr есть преимущество — его имя уникально, потому что записано транслитом и в таком виде не встречается у других известных производителей голосов. Но через pyttsx3 этот голос будет работать только в Windows. Для воспроизведения в Linux ему нужен речевой Speech Dispatcher, с которым библиотека взаимодействовать не умеет. Как общаться с «диспетчером» еще обсудим, а пока разберемся с доступными голосами.

Как выбрать голос по имени

В Windows голос удобно выбирать как по ID, так и по имени. В Linux проще работать с именем или языком голоса. Создадим новый файл set_voice_and_say.py:

import pyttsx3

tts = pyttsx3.init()

voices = tts.getProperty('voices')

# Задать голос по умолчанию

tts.setProperty('voice', 'ru') 

# Попробовать установить предпочтительный голос

for voice in voices:

    if voice.name == 'Aleksandr':

        tts.setProperty('voice', voice.id)

tts.say('Командный голос вырабатываю, товарищ генерал-полковник!')

tts.runAndWait()

В Windows вы услышите голос Aleksandr, а в Linux — стандартный русский eSpeak. Если бы мы вовсе не указали голос, после запуска нас ждала бы тишина, так как по умолчанию синтезатор говорит по-английски.

Обратите внимание: tts.say() не выводит реплики мгновенно, а собирает их в очередь, которую затем нужно запустить на воспроизведение командой tts.runAndWait().

Выбор голоса по ID

Часто бывает, что в системе установлены голоса с одинаковыми именами, поэтому надежнее искать необходимый голос по ID.

Заменим часть написанного выше кода:

for voice in voices:

    ru = voice.id.find('RHVoice\Anna')  # Найти Анну от RHVoice

    if ru > -1: # Eсли нашли, выбираем этот голос

        tts.setProperty('voice', voice.id)

Теперь в Windows мы точно не перепутаем голоса Anna от Microsoft и RHVoice. Благодаря поиску в подстроке нам даже не пришлось вводить полный ID голоса.

Но когда мы пишем под конкретную машину, для экономии ресурсов можно прописать голос константой. Выше мы запускали скрипт list_voices.py — он показал параметры каждого голоса в ОС. Тогда-то вы и могли обратить внимание, что в Windows идентификатором служит адрес записи в системном реестре:

import pyttsx3

tts = pyttsx3.init()

EN_VOICE_ID = "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech\Voices\Tokens\MS-Anna-1033-20DSK"

RU_VOICE_ID = "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech\Voices\TokenEnums\RHVoice\Anna"

# Использовать английский голос

tts.setProperty('voice', EN_VOICE_ID)

tts.say("Can you hear me say it's a lovely day?")

# Теперь — русский

tts.setProperty('voice', RU_VOICE_ID)

tts.say("А напоследок я скажу")

tts.runAndWait()

Как озвучить системное время в Windows и Linux

Это крошечное приложение каждую минуту проговаривает текущее время по системным часам. Точнее, оно сообщает время при каждой смене минуты. Например, если вы запустите скрипт в 14:59:59, программа заговорит через секунду. 

Создадим новый файл с именем time_tts.py. Всего, что мы разобрали выше, должно хватить, чтобы вы без проблем прочли и поняли следующий код:

# «Говорящие часы» — программа озвучивает системное время

from datetime import datetime, date, time

import pyttsx3, time

tts = pyttsx3.init()

tts.setProperty('voice', 'ru')  # Наш голос по умолчанию

tts.setProperty('rate', 150)    # Скорость в % (может быть > 100)

tts.setProperty('volume', 0.8)  # Громкость (значение от 0 до 1)

def set_voice(): # Найти и выбрать нужный голос по имени

    voices = tts.getProperty('voices')

    for voice in voices:

        if voice.name == 'Aleksandr':

           tts.setProperty('voice', voice.id)

        else:

            pass

def say_time(msg): # Функция, которая будет называть время в заданном формате

    set_voice() # Настроить голос 

    tts.say(msg)

    tts.runAndWait() # Воспроизвести очередь реплик и дождаться окончания речи

while True:

    time_checker = datetime.now() # Получаем текущее время с помощью datetime

    if time_checker.second == 0:

        say_time('{h} {m}'.format(h=time_checker.hour, m=time_checker.minute))

        time.sleep(55)   

    else:

        pass

Программа будет отслеживать и называть время, пока вы не остановите ее сочетанием клавиш Ctrl+Break или Ctrl+C (в Windows и Linux соответственно).

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

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

Обертка для eSpeak NG

Модуль называется py-espeak-ng. Это альтернатива pyttsx3 для случаев, когда вам нужен или доступен только один синтезатор — eSpeak NG. Не дай бог, конечно. Впрочем, для быстрых экспериментов с голосом очень даже подходит. Принцип использования покажется вам знакомым:

from espeakng import ESpeakNG

engine = ESpeakNG()

engine.speed = 150 

engine.say("I'd like to be under the sea. In an octopus's garden, in the shade!", sync=True)

engine.speed = 95 

engine.pitch = 32

engine.voice = 'russian' 

engine.say('А теперь Горбатый!', sync=True)

Обратите внимание на параметр синхронизации реплик sync=True. Без него синтезатор начнет читать все фразы одновременно — вперемешку. В отличие от pyttsx3, обертка espeakng не использует команду runAndWait(), и пропуск параметра sync сбивает очередь чтения.

Озвучиваем текст из файла

Не будем довольствоваться текстами в коде программы — пора научиться брать их извне. Тем более, это очень просто. В папке, где хранится только что рассмотренный нами скрипт, создайте файл test.txt с текстом на русском языке и в кодировке UTF-8. Теперь добавьте в конец кода такой блок:

text_file = open("test.txt", "r")

data = text_file.read()

tts.say(data, sync=True)

text_file.close()

Открываем файл на чтение, передаем содержимое в переменную data, затем воспроизводим голосом все, что в ней оказалось, и закрываем файл.

Управляем речью через Speech Dispatcher в Linux

До сих пор по результатам работы нашего кода в Linux выводился один суровый eSpeak. Пришло время позаботиться о друзьях Tux’а и порадовать их сравнительно реалистичными голосами RHVoice. Для этого нам понадобится Speech Dispatcher — аналог MS SAPI. Он позволяет управлять всеми установленными в системе голосовыми движками и вызывать любой из них по необходимости.

Скорее всего Speech Dispatcher есть у вас в системе по умолчанию. Чтобы обращаться к нему из кода Python, надо установить модуль speechd:

sudo apt install python3-speechd

Пробуем выбрать синтезатор RHVoice с помощью «диспетчера» и прочесть текст:

import speechd

tts_d = speechd.SSIPClient('test')

tts_d.set_output_module('rhvoice')

tts_d.set_language('ru')

tts_d.set_rate(50)

tts_d.set_punctuation(speechd.PunctuationMode.SOME)

tts_d.speak('И нежный вкус родимой речи так чисто губы холодит')

tts_d.close()

Ура! Наконец-то наше Linux-приложение говорит голосом, похожим на человеческий. Обратите внимание на метод .set_output_module() — он позволяет выбрать любой установленный движок, будь то espeak, rhvoice или festival. После этого синтезатор прочтет текст голосом, предписанным для данного движка по умолчанию. Если задан только язык — голосом по умолчанию для данного языка.

Получается, чтобы сделать кроссплатформенное приложение с поддержкой синтезатора RHVoice, нужно совместить pyttsx3 и speechd: проверить, в какой системе работает наш код, и выбрать SAPI или Speech Dispatcher. А в любой непонятной ситуации — откатиться на неказистый, но вездеходный eSpeak.

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

import platform

system = platform.system() # Вернет тип системы.

bit = platform.architecture() # Вернет кортеж, где разрядность — нулевой элемент

print(system)

print(bit[0])

Пример результата:

Windows

64bit

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

Модуль Google TTS — голоса из интернета

Google предлагает онлайн-озвучку текста с записью результата в mp3-файл. Это не для каждой задачи:

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

Что касается голосов, английский и французский звучат очень реалистично. Русский голос Гугла — девушка, которая немного картавит и вдобавок произносит «ц» как «ч». По этой причине ей лучше не доверять чтение аудиокниг, имен и топонимов.

Еще один нюанс. Когда будете экспериментировать с кодом, не называйте файл «gtts.py» — он не будет работать! Выберите любое другое имя, например use_gtts.py.

Простейший код, который сохраняет текст на русском в аудиофайл:

from gtts import gTTS

tts = gTTS('Иван Федорович Крузенштерн. Человек и пароход!', lang='ru')

tts.save('tts_output.mp3')

После запуска этого кода в директории, где лежит скрипт, появится запись. Чтобы воспроизвести файл «не отходя от кассы», придется использовать еще какой-то модуль или фреймворк. Годится pygame или pyglet. 

Вот листинг приложения, которое построчно читает txt-файлы с помощью связки gtts и PyGame. Я заметила, что для нормальной работы этого скрипта текст из text.txt должен быть в кодировке Windows-1251 (ANSI).

Выводим текст через NVDA

Мы научились озвучивать приложение с помощью установленных в системе синтезаторов. Но что если большинству пользователей эта фишка не нужна, и мы хотим добавить речь исключительно как опцию для слабовидящих? В таком случае не обязательно писать код озвучивания: достаточно передать текст интерфейса другому приложению — экранному диктору.

Одна из самых популярных программ экранного доступа в Windows — бесплатная и открытая NVDA. Для связи с ней к нашему приложению нужно привязать библиотеку nvdaControllerClient (есть варианты для 32- и 64-разрядных систем). Узнавать разрядность системы вы уже умеете.

Еще для работы с экранным диктором нам понадобятся модули ctypes и time. Создадим файл nvda.py, где напишем модуль связи с NVDA:

import time, ctypes, platform

# Загружаем библиотеку клиента NVDA

bit = platform.architecture()

if bit[0] == '32bit':

    clientLib = ctypes.windll.LoadLibrary('nvdaControllerClient32.dll')

elif bit[0] == '64bit':

    clientLib = ctypes.windll.LoadLibrary('nvdaControllerClient32.dll')

else:

    errorMessage=str(ctypes.WinError(res))

    ctypes.windll.user32.MessageBoxW(0,u"Ошибка! Не удалось определить разрядность системы!",0)

# Проверяем, запущен ли NVDA

res = clientLib.nvdaController_testIfRunning()

if res != 0:

errorMessage=str(ctypes.WinError(res))

ctypes.windll.user32.MessageBoxW(0,u"Ошибка: %s"%errorMessage,u"нет доступа к NVDA",0)

def say(msg):

    clientLib.nvdaController_speakText(msg)

    time.sleep(1.0)

def close_speech():

    clientLib.nvdaController_cancelSpeech()

Теперь эту заготовку можно применить в коде основной программы:

import nvda

nvda.say('Начать игру')

# … другие реплики или сон

nvda.close_speech()

Если NVDA неактивна, после запуска кода мы увидим окошко с сообщением об ошибке, а если работает — услышим от нее заданный текст. 

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

Заключение

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

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

Пройти обучение

29 авг 19, 15:15
0 0
Статистика 1
Показы: 1 Охват: 0 Прочтений: 0

Полезные навыки, которые можно освоить за 30 дней 

Начать изучать языки программирования, например Python

Книги для старта:

Allen Downey — Think Python: How to Think Like a Computer Scientist

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

Zead Show — Learn Python the Hard Way

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

Марк Лутц — Изучаем Python

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

Для забавной практики рекомендуем пройти образовательную игру Python Challenge 

Повысить мастерство игры в Го 

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

Го — это игра в основание царства. Стратегия здесь — превыше всего, а тактические приемы постоянно приходится переосмысливать и корректировать. 

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

Изучайте приёмы с помощью серии статей в одном из самых читаемых журналов СССР «Наука и жизнь» 1975-1976гг., после которой началось массовое развитие игры Го в России.

Выучить Азбуку Морзе

Код Морзе можно быстро передать с помощью телеграфа, а также он очень удобен для передачи сигнала бедствия (сигнала СОС) с помощью радио, зеркала или фонаря. С помощью Азбуки можно тренировать память, слух и шифровать свои сообщения. 

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

Соотнесите то, что вы услышали с буквами алфавита.

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

Привить себе любовь к музыке

Известно, что занятия музыкой позитивно влияют на правое полушарие, ответственное за творческое начало. 

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

При должном старании можно сыграть Имперский марш даже на ложечке для кофе. Есть пруф!

Спорт 

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

Заметим, что 30 дней хватит на то, чтобы организовать себе планка-challenge. 

Планка — упражнение с собственным весом. 

Не требует ничего, кроме вас и желания. При этом, укрепляются спина, руки, пресс, бёдра и ягодицы. 

Вот как правильно встать в планку: 

  • Ложитесь на живот на пол.
  • Подтяните руки к груди, упритесь мысками в пол.
  • Выпрямите руки, подняв тело над полом. Ладони прямо под плечами, таз не провисает и не поднимается вверх.
  • Ягодицы подтянуты, живот втянут. Макушкой тянитесь вверх, вытягивая шею, а плечи тяните вниз. Колени держите прямыми. Пятки не соприкасаются.

Если вы только начинаете заниматься, 30 секунд планки будет достаточно.

В первый день сделайте четыре подхода по 30 секунд и каждый старайтесь добавлять по несколько секунд к подходу. Записывайте успехи и гордитесь собой.


Конечно, месяц — небольшой срок для достижения уровня «бог», но можно попробовать. 

Ведь согласно одному из направлений психологии — для формирования привычки необходим 21 день :)  

Пройти обучение

18 май 18, 19:16
0 0
Статистика 1
Показы: 1 Охват: 0 Прочтений: 0

Как Королев, Армстронг и Маск принесли космос в культуру

Человек давно стремится раскрыть тайны Вселенной. Эта цель стала не только мощным двигателем технологического прогресса, но и определила целый пласт культуры. За десятилетия космических исканий в ней сформировались почти археологические слои. В День космонавтики предлагаем «раскопать» их: вспомним историю освоения космоса и то, как она отразилась в культовых книгах, кинолентах, видеоиграх и музыкальных треках, под которые хорошо мечтается о звездах.

До 12.04.1961

Мечты людей о покорении космоса находили отклик в культуре и искусстве еще до легендарного гагаринского полета. Одно из первых произведений в этом ключе – роман Герберта Уэллса «Война миров», написанный в 1897 году. Впервые в литературе прозвучала тема инопланетного вторжения и вражды между людьми и пришельцами.

В советской фантастике первооткрывателем космической тематики становится ученый Константин Циолковский: его повесть «Вне Земли» была опубликована в 1918 году. Вершина отечественной космической фантастики 1920 годов – роман «Аэлита» Алексея Толстого. Он повествует о путешествии землян на Марс в поисках нового общества.

В 1940-е годы на Западе колоссальную популярность приобрела «космическая опера» – отдельное течение приключенческой научной фантастики. И пока ученые снаряжали ракету V-2 с плодовыми мушками, чтобы 20 февраля 1947 отправить в космос первую жизнь, –  писатели, режиссеры и журналисты тоже не теряли времени:

  • Эдмонд Гамильтон прославился своими романами о масштабных космических катастрофах, за которые его прозвали и Разрушителем, и Спасителем миров;
  • Журнал "Astounding" растиражировал космические вестерны, ставшие фирменным жанром издания;
  • Газеты пестрели комиксами о Флэше Гордоне и Баке Роджерсе, а на их основе сняли киносериалы.

На этом поп-фоне выделялась концептуальная научная фантастика, легендарной сагой которой стал цикл из семи романов Айзека Азимова – «Основание». В 1966 году оригинальная трилогия удостоилась специальной премии "Hugo" за «лучшую фантастическую серию всех времен».

«Заря», я «Кедр». Поехали!

Под этими позывными общались Сергей Королев и Юрий Гагарин во время легендарного полета на корабле «Восток-1» 12 апреля 1961 года. Тогда человек впервые покорил космическое пространство, и астронавтика захватила умы с новой силой. Прибавьте к этому первый в мире групповой полет 12 августа 1962 года, женский дебют в космосе Валентины Терешковой в 1963-ем, и, год спустя, выход Алексея Леонова из корабля за пределами земной атмосферы – и сможете представить, насколько в 60-е земляне устремились к Вселенной.

В 1961 году на экраны вышел один из первых советских фантастических фильмов о космическом путешествии – «Планета бурь». В картине были применены уникальные технологии комбинированной съемки, в том числе подводной. Они намного опережали зарубежные аналоги.

11 марта 1964 года Джин Родденберри представил короткую первую версию научно-фантастического телевизионного сериала "Star Trek". 8 сентября 1966 года вышла пилотная серия, а сам "Star Trek" стал культовым и до сих пор продолжает свое шествие по экранам – уже в виде франшизы.

Волновала умы зрителей и «Барбарелла» 1968 года. Из рекламной аннотации тех времен становится ясно, почему: «Искательница сексуальных приключений Барбарелла путешествует по Вселенной. Она встречается с представителями рас и цивилизаций самой разнообразной внешности и несет им любовь». Мотивация к покорению космоса достигла пика – земляне рисовали в фантазиях встречу со свободной от предрассудков Барбареллой…

Вехой в развитии кинофантастики стала «Космическая одиссея 2001 года» (1968), снятая Стэнли Кубриком. В честь этой книги и фильма НАСА назвала орбитальный аппарат Mars: "2001 Mars Odyssey".

Одним из лучших фильмов 60-х стала «Планета обезьян» (1968), снятая по одноименному роману Пьера Буля (1963). Лента рассказывает о космическом корабле, отправленном с Земли к ближайшей звезде, и о высадке на планете со странными «животными». Кинокартина породила несколько сиквелов, два телесериала, один ремейк и недавний перезапуск, вышедший под названием «Восстание планеты обезьян».

Революцию в музыке произвели Pink Floyd. С первых же альбомов команда смело экспериментировала. Музыканты не просто писали песни о космосе с названиями вроде "Interstellar Overdrive" и "Set the Controls for the Heart of the Sun", но и стремились к новому, футуристическому звучанию.

Шаг, определивший эпоху

В 1969 году Нил Армстронг ступил на Луну и открыл новые возможности для человека в космосе. Надежда открыть новый мир и почувствовать под ногами неземную твердь обрела реальные очертания.

В 1971 году Майк Мэйфилд написал текстовую игру "Star Trek" на BASIC. А видеоигра "Space Invaders" (1978) была признана лучшей аркадной игрой по версии Книги рекордов Гиннесса.

На экраны в этот период вышли легендарные киноленты, сериалы и мультфильмы:

  • «Москва – Кассиопея» –  СССР, 1973;
  • «Большое космическое путешествие» –  СССР, 1975;
  • «Звездные войны IV» – США, 1977;
  • «Через тернии к звездам» –  СССР, 1980;
  • «Путеводитель по Галактике для автостопщиков» –  Великобритания, 1981;
  • «Тайна третьей планеты» –  СССР, 1981.

В музыке тоже царит очарование космосом:

  • David Bowie – Space Oddity (1969);
  • The Beatles – Across The Universe (1970);
  • Elton John – Rocket Man (1972);
  • «Надежда» (1971) – песня, написанная Александрой Пахмутовой и Николаем Добронравовым, стала музыкальным талисманом советских и российских космонавтов.

В 1977 на танцплощадках Парижа появились Space – странные люди, одетые в скафандры с глухими забралами. Они делали упор на «неземные» звуки синтезатора и научно-фантастическое шоу.

Мода откликнулась на космические полеты футуристическим стилем: Андрэ Куррэж и Пако Рабанн, металл и пластик, облегающие комбинезоны и высокие сапоги на плоской подошве… Даже маленькие дамские шляпки напоминали летные шлемы. Советские модницы носили тоже носили «неземные» аксессуары: вот и у мамы Дениски из знаменитых рассказов Драгунского была шляпка, похожая «на космонавтский шлем».

Гости или захватчики?

Позже космическая романтика пошла на спад, и на смену вдохновенному освоению планет пришло ожидание встречи с внеземными созданиями. Космические корабли уже достигли поверхности Венеры и Марса, были запущены искусственные спутники Юпитера и астероидов, а космический аппарат "Voyager-1" сделал снимок Земли с расстояния 6 млрд километров. Но ощущение «инопланетного наблюдения» продолжало будоражить землян. Образы пришельцев варьировались по шкале от максимального позитива в духе «Альфа» (1986-1990) и героев фильма «Батарейки не прилагаются» (1987) до леденящего ужаса «Чужого» (1979).

В 90-х мы продолжали своеобразный диалог с «братьями по разуму» или злонамеренными интервентами  в «Секретных материалах» (1993), фильмах  «Пятый элемент» (1997) и «Люди в черном» (1997).

Эта эпоха подарила нам и «Футураму», и «Рейнджеров», которые сказались на культуре гиков. В мире видеоигр произвела фурор "X-COM: UFO Defense".

Из магнитофонов и приемников звучали такие «космические» композиции, как:

  • Beastie Boys – Intergalactic (1998);
  • Radiohead – Subterranean Homesick Alien (1997);
  • Ash – Girl From Mars (1996). Кстати, некоторое время эта песня использовалась NASA как музыка для ожидания на телефонной линии.

Если верить знаменитой песне «Землян» «Трава у дома» (1982), то рокот космодрома уже никому не снился.  

Возвращение мечты

В 2002 году была основана компания «SpaceX» – вдохновением для магната Илона Маска послужило «Основание» Азимова и его идея жизни на Марсе. В сознании людей стала укореняться мысль, что делать на нашей планете больше нечего.

Во многом благодаря Илону Маску, давшему столько сочных поводов для сетевых мемов, космос вновь вернулся к нам. На первом плане оказались сюжеты о том, как освоить дальние миры – чего стоит «Марсианин» с его выращиванием картошки.

День космонавтики – отличный повод познакомиться с фильмами 21 века, расширяющими наш взгляд до масштабов Вселенной:  

  • «Космос как предчувствие» (2005);
  • «ВАЛЛ-и» (2008);
  • «Гравитация» (2013);
  • «Интерстеллар» (2014);
  • «Время первых» (2017).

Тема космоса в последнее десятилетие так «выстрелила», что в октябре 2012 года The Walt Disney Company приобрела Lucasfilm (компания-производитель «Звездных войн») с правами за $4,05 млрд. Вышла трилогия сиквелов саги:

  • «Звездные войны. Эпизод VII: Пробуждение силы» (2015);
  • «Изгой-один. Звездные войны: Истории» (2016);
  • «Звездные войны. Эпизод VIII: Последние джедаи» (2017).

Романтика путешествий также нашла воплощение в кино о милых и забавных «Стражах галактики».

В видеоиграх тоже произошло возрождение космической тематики:

  • "Mass Effect" (2007);
  • Перезапуск "XCOM: Enemy Unknown" (2012);
  • "Kerbal Space Program", где нужно построить космический корабль, а затем запустить и посадить его. И это вовсе не так просто, как кажется. Ничего не напоминает?

Благодаря достижениям современной космонавтики у человека снова появилась надежда на то, что мы освоим далекие галактики. А увлеченные технологиями гики остаются преданы теме космических странствий – всеми мыслями, мониторами и экранами, наушниками и джойстиками.

Помните, что в первом ряду на Mission Control запуска Falcon Heavy сидели программисты!

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

Пройти обучение

10 апр 18, 19:12
0 0
Статистика 1
Показы: 1 Охват: 0 Прочтений: 0
Показаны все темы: 4

Последние комментарии

нет комментариев
Читать

Поиск по блогу

Люди

7 пользователям нравится сайт lena2018.mirtesen.ru