FishSpeak - a voice communication software without bells and whistles
FishSpeak -server [-portable] [config_file]
[-serverIP=ip] [-serverPort=port] [-serverPW=pw] [-authFile=filepath]
[-noEncryption] [-CLI] [-alwaysOnTop] [-minimizeToTray]
[-limiterAttack=ms] [-limiterRelease=ms] [-log=path]
[-loop] [-softclip=percentage] [-numThreads=count] [-IPv6] [-IPv4]
FishSpeak -serverIP=ip [-portable] [config_file]
[-serverPort=port] [-serverPW=password] [-showSetup]
[-noEncryption] [-connect] [-noReconnect] [-bufferCount=count]
[-alwaysOnTop] [-minimizeToTray] [-volume=vol] [-fxVolume=vol]
[-allowMultipleClients] [-rateIn=rate] [-rateOut=rate]
[-AGCGain=gain] [-AGCInc=inc] [-AGCDec=dec] [-IPv6] [-IPv4]
[-hkMuteMe=hkdef] [-hkMuteThem=hkdef] [-hkVolumeUp=hkdef]
[-hkVolumeDown=hkdef] [-hkPTT=hkdef] [-hkPTM=hkdef]
FishSpeak is a fully featured but minimalistic voice communication tool.
It is freeware and may be copied freely as long as the entire package -
including all support files (readme, license, etc) - is copied.
But you may not collect any money for providing any services in relation
to FishSpeak without prior written authorisation by the author.
That is, but not limited to, providing server hosting, distribution and
Options that have to be specified on the command line:
-portable Modify the location where application specific data is stored.
Instead of the location specified in the subsection FILES,
the files are actually stored in a subdirectory named ".user"
alongside the application.
-showSetup Force display of the configuration window.
Useful if you unchecked the checkbox to display the
configuration window on every start.
config_file A text file containing one option per line without the
Multiple configuration files can be specified. They are read
left to right, so you can overwrite options in files by re-
defining them in a config file and specifying it further on the
right on the command line.
Options that can be specified on the command line or in a config file:
-server Run FishSpeak in server mode.
-serverIP=<ip> * Client: required.
Specify the IP address (or fully qualified domain name)
of the server to connect to.
* Server: restrict listening to this IP address.
The default is to listen on all IP addresses.
-serverPort=<port> Specify the UDP port the server is running on.
-serverPW=<pw> Set the password required to connect to the server.
Quote the password if it contains whitespaces.
Enables encryption of outgoing data stream
E.g. -serverPW="This is secret"
-IPv4 As of release 9 FishSpeak fully supports IPv6.
-IPv6 Not specifying IPv4 or IPv6 results in a dual-stack-
scenario, where both protocols are used.
This should work fine in all but three cases:
1) Windows XP: Doesn't support dual-stack, hence
it's restricted to one protocol only. By default
that is IPv4. If you need to connect to or host
a server via IPv6 you have to use the -IPv6 parameter.
2) Connecting to a server by its domain name may
resolve that domain name to an IPv6 address.
If you can't access that server via IPv6 you need to
use -IPv4 to restrict FishSpeak to IPv4 name resolving.
3) Hosting a server on a machine with IPv4 and IPv6
addresses can be restricted to one of those network-
families by the respective parameter.
-noEncryption Don't encrypt the outgoing data stream.
For encryption to be enabled a server-wide password
(-serverPW) has to be set or an user-based authentication
file (-authFile) needs to be used.
-alwaysOnTop Windows only.
Keep the window always on top of other windows.
-minimizeToTray Windows only.
Show the window in the system tray only, when minimised.
-CLI Don't display a window. Output is sent to stdout.
-noGUI Windows: without a window the server can be closed
with the Task Manager only.
-authFile=<filepath> Use the file at <filepath> for user-based
The file contains one user per line, where each line has
the format "username:password" (without the quotes).
When an authentication file is used, no anonymous access
is allowed (that is: connecting without user+password if
there is no server-wide password defined)
Note that a password set via -serverPW still works as
-log=<filepath> Absolute path of a logfile where server events
(users connecting, disconnecting, changing rate)
are logged to.
If -log is not specified those events are not logged.
-numThreads=<count> Set the number of threads the server should use.
The default is the number of cores FishSpeak can detect,
which is the best setting. Well, most of the time, anyway.
You may experiment with different settings.
Note: CPUs with Hyper-Threading are detected as CPUs with
multiple cores. You should restrict the number of threads
to the actual number of cores explicitly as this will very
likely yield a better performance.
-loop Return the incoming audio back to the sender too.
-softclip=<val> Enable soft clipping above the specified percentage.
To disable soft-clipping (= use hard clipping) set
the value to 100.
-limiterAttack=<val> 0-250. Limiter's attack time in milliseconds.
Limiter's release time in milliseconds.
Server as Windows service
-installSVC=<filepath> Installs a FishSpeak server as service, using the
specified file for configuration. Make sure that filepath is
absolute and you don't remove that file while the service
is installed as service.
The service will be named "FishSpeak (<filename>)".
So if you want to install multiple services, make sure the
configuration files have different filenames.
-uninstallSVC[=<filename>] Uninstalls a FishSpeak service.
Using -uninstallSVC without parameters lists the installed
Specify the name of the service you want to uninstall to,
-userName The username and password to use, when connecting to a server
-userPW using user-based authentication.
-connect Connect to the server immediately on application's start.
-noReconnect Don't reconnect to the server automatically if the connection
-bufferCount=<count> Number of audio buffers used to buffer the
incoming audio stream before playback.
Decrease the number to reduce latency at the cost
of higher CPU usage. If the audio starts to
stutter, this value is definitely to low.
Default is 10. 3 should still work fine. But that
really depends on your hardware configuration.
-volume=<vol> Set the master volume in 10 steps.
-5 (silence) to +5 (+100% volume)
-fxVolume=<vol> Set the volume of FX sounds (Dis-/Connect, Mute, ...)
0 (silence) to 10 (100% relative to master volume)
-allowMultipleClients Windows only.
Allow multiple clients to run at the same time.
This is the default on everything non-Windows.
-AGCGain=<gain> The maximum gain for the automated gain control.
Set to 0 to disable AGC completely.
-AGCInc=<dB/s> Maximum volume increase in dB/s.
-AGCDec=<dB/s> Maximum volume decrease in dB/s.
-rateIn=<qual> Select the bandwidth/quality for the incoming audio stream.
-rateOut=<qual> Select the bandwidth/quality for the outgoing audio stream.
highest quality: 4
lowest quality: 0
-hkMuteMe=<keychain> Toggle "Mute Me".
-hkMuteThem=<keychain> Toggle "Mute Them".
-hkVolumeUp=<keychain> Increase the master volume.
-hkVolumeDown=<keychain> Decrease the master volume.
keychain is a string in the form of <key>+<key>+..
Do not separate them with any whitespaces.
a - z / A - Z, 0 - 9
SPACE, BACKSPACE, TAB, RETURN, CAPSLOCK,
PLUS, MINUS, COMMA, PERIOD, COLON, SLASH, GRAVE,
LBOXBRACKET, RBOXBRACKET, BACKSLASH, QUOTE,
PRINT, SCROLLLOCK, PAUSE,
PAGEUP, PAGEDOWN, END, HOME, INSERT, DELETE,
LEFT, UP, RIGHT, DOWN,
NUM0 - NUM9, NUMADD, NUMSUB, NUMDIV, NUMMUL, NUMDEC,
ESC, F1 - F11
<key> under X11: XStringToKeysym() is used.
While on Windows multiple keys are allowed X11 and OS X only
allow a single key to be used as hotkey.
e.g. <modifierlist>+R+E works on Windows only.
<key> for modifier keys:
* Windows: LCONTROL, RCONTROL, LSHIFT, RSHIFT, LALT, RALT,
* OS X: CONTROL, SHIFT, COMMAND, OPTION
* X11: CONTROL, SHIFT, MOD1 - MOD5
'<' and/or '>' to the left of "Connected to..." displays the used
encryption, if any.
'<' is displayed if the client's incoming data stream is encrypted.
'>' is displayed if the client's outgoing data stream is encrypted.
To replace one or multiple sounds that are played when an event happens,
put an ogg-vorbis file of your liking in the same directory as the
executable. (For OS X that is the bundle's "Resource" directory)
Format: Ogg-Vorbis, mono, 44.1kHz, 16bit.
Filenames: connect.ogg, join.ogg, part.ogg, ack.ogg
Directory containing the logfile and the client's configuration:
\Documents and Settings\<user>\Local Settings\Application Data\FishSpeak\
Windows Vista & Windows 7
Mac OS X
FreeBSD & Linux
THANKS & GREETINGS
Hellcook, Jana, noXu, Sheep, Wolfhound
R11 * 02011-1-1
Just for the numbers: release 11 on 1-1-11
Fix: [Windows] user-list became invisible when changed,
while the window was minimised
Change: better handling of audio null-devices
Other: update of all 3rd party libraries
R10 * 02010-04-22
Fix: [Windows] Possible 100% CPU usage when running server multi-threaded
R9 * 02010-03-16
Add: dedicated logfile for server events (see -log)
Add: IPv6 support.
See -IPv4/-IPv6 if you encounter a problem while connecting/hosting
Change: range of bufferCount-parameter changed to [3;30]
Change: new default of bufferCount is 10
Fix: [POSIX] server timing-out clients after up-time of more than a month
Remove: ancient debug messages in logfile
R8 * 02010-01-01
Add: Button to return to setup window
Add: Added "username" as alias of "userName" parameter
Add: Support for 64bit on all platforms
Fix: Message box if capturing device could not be opened
and returning to setup
Fix: Supporting non-ASCII characters in audio-device names
Fix: Ignoring UTF-8 BOM in configuration files
Fix: Disabled AGC lowering volume even when AGC was disabled
Fix: [OX X] Global hotkeys ignored specified modifier keys
Fix: [OS X] Reduced high CPU usage because of GUI repaints
R7 * 02009-07-18
Add: [Win32] server as service (see -installSVC)
Add: [X11] global hotkeys
Fix: config and authentication files not working if line-break was \r\n
Fix: non-value parameters in config file not working
Fix: seemingly random crash
Fix: "allowMultipleClients" works in config files, as documented
Fix: haywire user list when connecting to server with more than 2s
R6 * 02009-05-04
Support user-based authentication
[see -userName -userPW -authFile]
Server taking advantage of multi-core CPUs
Allow replacing built-in sounds
Added parameter -noGUI, which is an alias for -CLI as it seems more
natural on Windows.
Windows: Reduced CPU usage (server by ~75%; client by ~50%)
OS X: Fixed malformed folder names when using -portable
R5 * 02009-03-12
Server on POSIX systems: Graceful exit on SIGTERM and SIGINT
FreeBSD: Fixed crash on exit
R4 * 02009-03-07
Changed UI of server
No libX11 required for server in CLI mode
autoReconnect -> noReconnect
forceConfig -> showSetup
Fixed bug that could result in endless connect/disconnect-cycles
Windows on X11 work with color depths < 24bpp now
R3 * 02009-03-02
First public release
Redirected to production patch server
Encrypts by default
Numerous smaller (and bigger) bug fixes
R2 * 02009-01-04
Fixed bugs in UI
R1 * 02008-12-27
Initial private release
02008-02011 nXperience - Ingo Leitgeb, Steyr/Austria
See LICENSE.txt for a list of used 3rd-party libraries and their respective
THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
THE COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE FOR ANY DIRECT, INDIRECT,
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES ARISING OUT OF
THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING, BUT NOT LIMITED TO,
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT, EVEN IF SUCH HOLDER OR OTHER
PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.