Speak Freely for Windows

Release 7.0

by John Walker & Brian C. Wiles
WWW Home page: http://www.speakfreely.org/
Japanese Manual:  http://www.netlaputa.ne.jp/~NTSK1020/manual/manual.htm

Speak Freely is a Windows application that allows you to talk (actually send voice, not typed characters) over a network. If your network connection isn't fast enough to support real-time voice data, four forms of compression may allow you, assuming your computer is fast enough, to converse nonetheless. To enable secure communications, encryption with DES, IDEA, and/or a key file is available. If PGP is installed on the user's machine, it can be invoked automatically to exchange IDEA session keys for a given conversation. Speak Freely for Windows is compatible with Speak Freely for Unix, and users of the two programs can intercommunicate. Users can find one another by communicating with a "Look Who's Listening" phonebook server. You can designate a bitmap file to be sent to users who connect so they can see who they're talking to. Speak Freely supports Internet RTP protocol, allowing it to communicate with other Internet voice programs which use that protocol; in addition, Speak Freely can also communicate with programs which support the VAT (Visual Audio Tool) protocol.

Release 7.0 now available! This release is a 32-bit application which runs in native mode on Windows 95 and Windows NT. Starting with Release 7.0, Speak Freely for Windows will be released only for 32-bit systems. Users of 16-bit Windows 3.x systems can continue to use Speak Freely 6.0, which remains available and can communicate with later releases without difficulty.

Release 7.0 includes support for United States Department of Defense Federal Standard 1015 / NATO-STANAG-4198 / LPC-10 compression algorithm, republished as Federal Information Processing Standards Publication 137 (FIPS Pub 137). LPC-10 compression (an algorithm completely different from that the original LPC compression) compresses sound by a factor of more than 26 to 1 with fidelity, albeit less than that of GSM compression, perfectly adequate for voice-grade communications.

The extreme compression achieved by the LPC-10 algorithm allows the option of ``robust transmission,'' in which multiple copies of sound packets are sent, each containing a sequence number which allows the receiver to discard duplicate or out-of-sequence packets. Robust transmission often allows intelligible conversation over heavily loaded network links which would otherwise induce random pauses and gaps in received sound.

Mailing lists now open! Two Internet mailing lists devoted to Speak Freely are now open to subscribers, one for general unmoderated discussion of all topics related to Speak Freely (also available as a periodic digest) and a moderated list reserved for announcements of general interest to the Speak Freely user community. Please consult the mailing list documentation for further details and information on how to subscribe.

Remote echo servers now available! Servers are now running at the sites corona.itre.ncsu.edu, echo.fourmilab.to, and echo.fourmilab.ch which echo back any sound you send ten seconds later, using the same compression and encryption modes as the sound you sent. This lets you experiment with different modes without tying up a person on the other end. Note: the echo.fourmilab.ch server shares its Internet link with the very busy www.fourmilab.ch Web site; as a result, due to outbound traffic you may experience pauses when using this server that you wouldn't encounter otherwise.

Notice: A great deal of work has been done to make Speak Freely work on as many computer configurations as possible, but given the extraordinary variety and uneven quality of sound cards and drivers, network interfaces, Internet Service Providers, Windows Sockets drivers, etc. in the real world, and the fact that many of these components were not designed and have not been tested for real-time transmission of sound, you may have to do some fiddling with your configuration to get Speak Freely running satisfactorily, and you may discover that with your current configuration you can't get it to work at all. Speak Freely uses only standard Windows multimedia and network services, but it pushes them much harder than do most other Internet tools. If the hardware and drivers on your machine do not function according to Microsoft's specifications, there is nothing Speak Freely can do about it.

Further, if your network connection isn't sufficiently fast and consistent, and/or your computer doesn't run fast enough to execute this very demanding program in real time, you'll be disappointed with the results. A 486/50 or faster computer with a 28.8 kilobit per second or faster Internet connection is ideal; you can run over a 14.4 kilobit per second Internet connection by using LPC compression. If your computer is fast enough to run LPC-10 compression (a 75 Mhz or faster Pentium is generally required), you can send audio over links as slow as 4800 bits per second. Speak Freely is a 32 bit Windows applications which runs under Windows 95 and Windows NT. Earlier versions which run on 16-bit Windows and compatible systems (such as OS/2 Warp) remain available. Just in case I inadvertently broke something in this latest release, executable and source distributions for all prior releases remain available.

Downloading and Installation

Want to give it a try? First make sure you have the required computer hardware and software at hand. If so, go ahead and download the executable program archive into a directory of its own, unzip the archive with PKUNZIP or a compatible archive extractor, create a new program item with the Program Manager File/New... menu item for the executable speakfre.exe, and you're ready to go.

Download Speak Freely

Non-Cryptographic Version

Some governments believe individuals shouldn't be able to have private conversations and attempt to restrict the use, distribution, or export of software that provides communication security through encryption. The standard version of Speak Freely includes encryption; if you are worried that using or redistributing such software (for example, placing Speak Freely on an Internet site or public bulletin board system) might violate the laws of your jurisdiction, you can obtain a version of Speak Freely (nicknamed Spook Freely) which has all encryption capability removed. This version tells its users where to obtain a copy with full encryption capability, should they desire to do so.

Download Speak Freely non-cryptographic version

Source Code

Complete source code is available for Speak Freely. Source code is intended for experienced Windows developers only. You don't need the source code unless you want to modify the program yourself. If you want to look under the hood, download the source code, which you'll need Visual C/C++ 4.0 (no C++ features are used) to compile. Source code for the last 16-bit release, 6.0, is also available; it was developed using Visual C/C++ 1.52c. To extract the source code, create a directory for it and, in that directory, use the command:
        pkunzip -d speakfs.zip
The "-d" option is essential; without it the subdirectory structure in the archive will be lost. Once you've extracted the files, you can use Visual C++ to build all of the libraries in the subdirectories and then build the main program. Assuming the protected mode help compiler, hcp, is on your path, typing make in the help subdirectory will rebuild the help file.

If you decide to experiment with the source code, you're entirely on your own--I do not have the time to provide support to novice developers. Speak Freely is a large, complicated, and tricky program which requires a substantial investment in time to learn your way around before you commence any serious development.

Download Speak Freely source code


Table of Contents

Introduction
Hardware and software requirements
Connections
Creating a new connection
Setting connection options
Closing a connection
Saving a connection in a file
Opening a connection file
Communicating
Receiving audio
Sending live audio
Sending sound files
Ringing remote users
Testing using local loopback
Multicasting to a group
Broadcasting to multiple sites
Viewing extended status
Voice activated transmission
Communicating with other network audio programs
The answering machine
Show your face
Phonebook: Look Who's Listening
Publishing your directory entry
Finding on-line users
Compression
Encryption
Why encryption?
Varieties of encryption
Generating and exchanging keys
Legal issues
Patent issues
Command line arguments
Problems, problems
Regular pauses in audio output
Random pauses in audio output
Compression slows down transmission
Debugging: Viewing extended status
Workarounds for driver bugs
Internet resources
Speak Freely Internet mailing lists
Echo servers
Publishing your directory entry
Finding on-line users
Hardware issues
Viewing hardware configuration
Measuring computer performance
8 or 16 bit sampling?
Half- or full-duplex?
Bugs, features, and frequently asked questions
References
Speak Freely for Unix machines
Credits
Bookshelf
Development log

Introduction

Speak Freely is a Microsoft Windows application that allows you, with appropriate hardware and software, to send and receive audio, in real time, over a computer network. If you're connected to the Internet by a sufficiently high-speed link, you can converse with anybody else similarly connected anywhere on Earth without paying long-distance phone charges. Users can find one another, even if they have dial-up connections to the Internet, by publishing and searching directory entries on a Look Who's Listening server. You can designate a bitmap file to be sent to users who connect so they can see who they're talking to.

Speak Freely not only because you aren't running up your phone bill, but also knowing your conversation is secure from eavesdroppers. Speak Freely provides three different kinds of encryption, including the same highly-secure IDEA algorithm PGP uses to encrypt message bodies. By using PGP to automatically exchange keys, session you can Speak Freely to total strangers, over public networks, with greater security than most readily available telephone scramblers provide.

Speak Freely for Windows is 100% compatible with Speak Freely for Unix, currently available for a wide variety of Unix systems. Windows users can converse, over the Internet, with users of those Unix machines.

Multicasting is implemented, allowing those whose networks support the facility to create multi-party discussion groups to which users can subscribe and drop at will. For those without access to Multicasting, a rudimentary Broadcast capability allows transmission of an audio feed to multiple hosts on a fast local network.

Hardware and software requirements

In order to use Speak Freely, you need a personal computer with the following hardware and software: Sending real-time audio over a data network is demanding on every component in the chain, and the performance required of your computer and network interact in complicated ways. For example, if you're communicating exclusively with other people over a high-speed local network and you aren't worried about eavesdropping, you don't need to enable either compression or encryption, both of which require a great deal of computation. For such an application a 386 machine is perfectly adequate. If your network link is slower, you'll have to compress the sound before it's transmitted. The most effective form of compression provided by Speak Freely, that used by GSM digital cellular telephones, reduces the data bandwidth requirement by almost a factor of five but is so computationally intense it can be done in real time only on a very fast 486 or Pentium machine. Encryption also takes time; the three methods available vary in the computation required. Compression reduces encryption overhead since there's less to encrypt.

Whether Speak Freely will work effectively for you depends upon your CPU speed, network bandwidth, load on the network, and the compression and encryption modes you select in a complicated and subtle manner. The best way to find out is to try it; if it works, great; if it doesn't, try again when you next upgrade your computer or network connection. Speak Freely provides a built-in performance benchmark to assist you in selecting modes appropriate for your computer. You can experiment to determine which settings work best by connecting to an echo server which returns any sound you send to it after a 10 second delay.


Next Previous Contents
by Brian C. Wiles

February 7, 1999