Elektroda.pl
Elektroda.pl
X
Montersi
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Automatyczna sekretarka na Raspberry Pi

ghost666 30 Kwi 2018 15:14 1545 0
  • Automatyczna sekretarka na Raspberry Pi
    W dzisiejszych czasach klasyczne telefony, czy nawet systemy VoIP nie są już zbyt popularne, co nie zmienia jednak faktu, że poniższy projekt - dodający funkcjonalności 'telefoniczne' do Raspberry Pi jest bardzo ciekawy. Bardzo często telefon jest wygodniejszym narzędziem komunikacji np. o tym, ze coś nie działa, np. temperatura przekroczyła ustalony próg, wilgotność nazbyt wzrosła, na dysku kończy się miejsce etc. Analogicznie w drugą stronę - wykonanie połączenia do naszej 'Maliny' może być prostą metodą kontroli systemu, np. umożliwia reboot, otwarcie drzwi etc.

    Można zaimplementować tego rodzaju komunikację na inny sposób, wykorzystać chociażby SMSa, czy też prostą aplikację sieciową, ale połączenie telefoniczne z pewnością przyciągnie więcej uwagi niż krótka wiadomość.

    Pierwszą rzeczą, jakiej potrzebuje nasz system, jest syntezator mowy. Autor projektu przetestował dwa pakiety tego rodzaju oprogramowania - festival oraz eSpeak. Do naszego zastosowania istotne jest, aby możliwe było zapisywanie wygenerowanego dźwięku jako pliku wav. Oba pakiety to umożliwiają, więc nie ma problemu.

    Autor porównał oba syntezatory na Raspberry Pi. Dają one dźwięk podobnej jakości, ale eSpeak działa odrobinę szybciej i ma większe możliwości konfiguracyjne, więc to on został wybrany do dalszego wykorzystania. Które narzędzie wybierzecie Wy - zależy zupełnie od Was - oba zainstalować można poprzez apt:

    Kod: bash
    Zaloguj się, aby zobaczyć kod


    Aby wygenerować plik wave z dźwiękiem, korzystając z eSpeak, do komendy dodać musimy następujące przełączniki:

    Kod: bash
    Zaloguj się, aby zobaczyć kod


    taka składnia sprawi, że plik dźwiękowy zapisany zostanie w głównym katalogu /.

    Jeśli chodzi o system telefoniczny, to autor zdecydował się wykorzystać telefonię SIP/VoIP. Istnieją co najmniej dwa narzędzia, które pozwalają na tego rodzaju połączenia i są kontrolowane z linii komend: Linphone (linphonec/linphonecsh) oraz PJSIP. Po wstępnych testach autor zdecydował się na PJSIP, ponieważ Linphone jest dosyć trudny w integracji z własnymi programami w porównaniu z wybranym narzędziem.

    PJSIP daje nam nie tylko w pełni kontrolowane z linii komend narzędzie, ale także potężną bibliotekę i API, do wykorzystania we własnych projektach, co sprawia, że integracja go z innym oprogramowaniem i skryptami jest niezwykle prosta.

    Aby rozpocząć korzystanie z PJSIP/PJSUA, musimy pobrać jego źródła i samodzielnie skompilować. Oprogramowanie to nie jest dostępne do instalacji poprzez apt. Jest to jednakże bardzo proste, wystarczy podstępować zgodnie z poniższymi instalacjami. Najpierw musimy zainstalować SVNa do pobrania najnowszej wersji projektu:





    Kod: bash
    Zaloguj się, aby zobaczyć kod


    Następnie pobrać musimy zależności dla projektu:

    Kod: bash
    Zaloguj się, aby zobaczyć kod


    Gdy wszystkie potrzebne pakiety zostaną już zainstalowane możemy przystąpić do kompilacji i instalacji PJSIP:

    Kod: bash
    Zaloguj się, aby zobaczyć kod


    Kompilacja może chwilę zająć, więc nie ma co się martwić. Po jej zakończeniu możemy trochę potestować urządzenie wykorzystując dołączone oprogramowanie: pjsystest lub pjsua, które znajdziemy w folderze /pjsip-apps/bin. Jeśli mamy jakieś problemy z dźwiękiem, to warto zaktualizować Raspbiana (tzw. warto tak czy inaczej), gdyż pewne wersje tego systemu źle współpracują z tym pakietem.

    Teraz, mając zainstalowane odpowiednie narzędzia, autor stworzył dwa narzędzia: sipcall i sipserv. Pierwszy z nich, to program do wykonywania połączenia telefonicznego, który wykorzystuje syntezator mowy, to przekazania wiadomości. Uruchamiany jest on z linii komend, dzięki czemu łatwo można zintegrować go ze skryptami np. w Bashu.

    Z kolei drugie narzędzie - sipserv - służy jako aktywna usługa, do której można się dodzwonić, by uzyskać jakieś informacje. Połączenie musi jedynie obsługiwać kody DTMF, gdyż to z ich pomocą wydawać możemy polecenia systemowi, który odpowiadać będzie nam zsyntezowaną mową.

    Do skompilowania tych narzędzi potrzebny będzie nam pkg-config, który zainstalować możemy poprzez apt:

    Kod: bash
    Zaloguj się, aby zobaczyć kod


    Autor stworzył także prosty skrypt w bashu, który pokazuje wykorzystanie tych narzędzi. Skrypt działając w tle sprawdza obciążenie systemu i jeśli jest zbyt duże, to dzwoni do użytkownika. Na GitHubie autora znaleźć można przykładowe skrypty wraz z przykładowymi plikami konfiguracyjnymi.

    Jeśli interesuje nas tego rodzaju funkcjonalność, to rozwój tego projektu śledzić możemy na GitHubie, gdzie inna osoba rozwija oprogramowanie autora - Link. Znajdziemy tam szczegółowy opis funkcjonalności programu i dodanych do niego funkcji.

    Źródła:
    http://binerry.de/post/29180946733/raspberry-pi-caller-and-answering-machine
    https://github.com/binerry/RaspberryPi
    https://github.com/fabianhu/SIP-Pi


    Fajne!
  • Montersi