вторник, 31 июля 2012 г.

Доработать скайп? Хммм, возможно :)

Все хотят того, чтобы все вокруг было удобно. Можно ли написать бота для скайпа, не подавая заявки на его kit? Да запросто ;)
http://skype4py.sourceforge.net/doc/html/ Очень замечательная штука для питона, всем рекомендую посмотреть. Через минуту вы уже будете спамить друзей, а через 5 напишите скриптик, который будет звонить им, когда они возьмут трубку - сбрасывать вызов)) 
Поэтому дерзайте -  если будет что-то интересное, можете и мне рассказать.

Кстати, подумываю прикрепить голосовой набор номера к умному дому. 

среда, 18 июля 2012 г.

Исходники говорливого, слушающего скрипта

Выкладываю исходники заготовки голосового управления компьютером. Кому что интересно - пишите.
Функции, которые были реализованы:
-Вкл/выкл радио
-Вкл/выкл музыка
-Говорит погоду
-Говорит время
-Говорит время последнего письма на электронной почте
-Откликается на имя Лиза ;)

Как перестану бездельничать, сделаю скрипт демоном и приступлю к дальнейшему развитию своего умного дома :)

Ссылка : https://www.dropbox.com/sh/thcook5ulyh6s9m/chgsV06j3B

P.S. Жду не дождусь роспберри пи 

вторник, 10 июля 2012 г.

Умный дом. Учим Linux слушать и говорить.

Иногда хочется зайти домой, сразу завалиться на диван, сказать: "Музыка!", и чтобы все сразу завелось, заиграло. Или узнать погоду на ближайшее время одним словом, не выходя в интернет и никуда не заглядывая... Да и много вещей хотелось бы автоматизировать таким образом...

Есть множество open sourse движков по распознаванию речи(по-моему мнению лучший - sphinx), но все они либо ужасны в настройке, либо голос распознают плохо, но это еще не самое страшное. Самое страшное - русский язык. По понятным причинам, хотелось чтобы все команды были на русском. Поэтому был избран самый простой способ распознавать русскую речь  и имя ему - google speech API. Конечно, есть определенные минусы при работе с google API, главный - зависимость от интернета, ну, что поделать, за все приходиться платить. 

Специфика работы такова: мы пишем свою команду во .flac(wav и другие форматы попросту не поддерживаются), посылаем куда надо и получаем ответ в формате json(читай python-словарь), в котором содержится несколько ключей, из которых интересны лишь два - текстовое представление той речи, которую мы произнесли и степень соответствия с указанным текстом(есть смысл, что если confidence(степень соответствия)<0,5 делать повторный запрос). 

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

Также хотелось бы, чтобы компьютер не только слушал, но и мог произносить речь. Можно конечно записать ответы заранее и вставлять их в определенные места, но это как-то не интересно, долго и узконаправленно. Намного круче заставить google translate произносить текст за нас :). 

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

четверг, 5 июля 2012 г.

Работа с файлами на Python (найдено на просторах рунета)

Список функций для работы с файлами.
01shutil.copy() # копировать файл
02shutil.copytree() # копировать каталог
03shutil.move() # перемещаем файл
04shutil.rmtree() # удалить каталог
05 
06tmpfile.mkstemp() # временный файл
07filecmp.cmp() # сравнить файл
08filecmp.cmpfiles() # сравнить каталог
09 
10subprocess() # Запуск другого процесса
11 
12os.getcwd() # получить рабочий каталог программы
13os.chdir() # изменить рабочий каталог
14os.access() # проверка доступа
15os.listdir() # Список каталогов и файлов
16os.strat() # сведения о файле
17os.mkdir() # создать каталог
18os.makedirs() # Создать каталог и промежуточные каталоги
19os.rmdir() # удалить пустые каталоги
20os.removedirs() # удалить пустые каталоги
21os.remove() # удалить
22os.walk() # выполнить команду по всем каталогам дерева
23 
24glob.glob() # получить список файлов и поддиректорий по маске
25 
26os.path.abspath() # абсолютный путь
27os.path.abspath() # разбивает путь каталог и имя файла
28os.path.dirname() # Получить из пути только каталога
29os.path.basename () # Получить из пути имя файла
30os.path.join() # соединить каталог и файл
31os.path.isfile() # Проверка является ли файлом
32os.path.isdir() # Проверка что это каталог
33os.path.getsize() # узнать размер
34os.path.exists() # проверить на существование
35os.path.getctime() # время создания файла
36os.path.getmtime() # время изменения