Speextalk
(C) Nicolas George - 2005-07-24

Overview

  Speextalk is a very simple voice-over-IP (VoIP) program with a custom
  protocol using the Speex codec. The keyword is simple: Speextalk does
  VoIP, and only VoIP, but the protocol is simple, the code is simple, and
  the usage is simple for an average Unix user.

  The features of Speextalk are:

  - Direct peer to peer two persons discussion.
  - Low to very low bandwidth usage (can be less than 1.2ko/s).
  - Identification of the callee by its IP address or host name and
    optionaly port number.
  - Network protocol independant code (IPv6 is supported, IPv8 would be).
  - Text mode interface.

  Some features that Speextalk does not have are:

  - Texts messages, contacts lists, directories, away notifications, etc.
  - Three way discussion or more.
  - Firewall autoconfiguration.
  - Cryptography.
  - Support for non-full-duplex sound cards (but pseudo-full-duplex with two
    sound cards is ok).

Installation

  See the INSTALL file.

Usage

  See the manual page (with a correct version of man, "man ./speextalk.1").

Portability

  Speextalk was programmed with constant references to the Single Unix
  Specification, version 3, including the threads and XSI extension. It can
  probably be used on any system following that standard, with the following
  provisions:

  The Speex library has to be available on that system, obviously.

  The default comment for the handshake uses the GECOS password database
  entry, which is not standard. Disabling it should be a simple matter, and
  would cause a negligible nuisance. See handshake.c; maybe I should put a
  #ifdef. Furthermore, the GECOS is assumed to be encoded in UTF-8.

  The sound interface is not standard, and I was not able to find a
  cross-platform library supporting capture and not only playback.
  Currently, only ALSA/libasound is supported, but all functions are wrapped
  and grouped in a single file: writing a new back-end should be a simple
  matter.

  The program assumes that wchar_t are Unicode numbers. It is not standard,
  but it is my opinion that a libc that does not honor that property is just
  plain stupid. Furthermore, it simplifies somewhat the code. If it does not
  hold, non-ASCII characters in comments will look wrong, and no more.
  Solaris in non-UTF-8 locales has that stupid misfeature.

  The program shares a few integers variables between threads withour proper
  locking. The way it is done, I expect the worst can be an improper display
  of volume or bandwidth from time to time, no worse.

Future directions

  - Keys for volume control.
  - Others sound back-ends.
  - Simple graphical user interface.
  - Push a friend to write an interoperating windows version.

Copyright

  Speextalk is (C) Nicolas George, 2005, and is distributed under the terms
  of the GNU General Public Licence version 2, as found on <URL:
  http://www.gnu.org/licenses/gpl.html > until the URL changes.

  The home page for Speextalk is <URL:
  http://www.eleves.ens.fr/home/george/info/prg/speextalk.html >.
