Whisper is an alternative voice system for OpenSimulator. It consists of an OpenSimulator region module and a Vivox SLVoice.exe replacement that must be installed on every viewer accessing the region using Whisper.
Whisper is implemented using the Mumble open-source voice chat project. On the server side, the Whisper region module connects to an unaltered Murmur server (Murmur is the name of the server component of Mumble). On the client side, the Whisper executable extends the existing Mumble voice client to implement the binary message interface between the SLVoice executable and the main viewer binary. The Mumble version of SLVoice needs to look exactly the same to the viewer as the original SLVoice.exe. The Whisper client is only available for Windows (although Linux and probably Mac OSX versions can be built). The client comes with an installer which replaces SLVoice.exe with the Whisper version and stores the original executable in a same place, so that it can be restored if/when necessary.
Communication between Mumble and the Whisper client is over ICE.
Information is available via these links:
- Initial Version 27-Dec-2010 - http://whisper.vcomm.ch/forum/viewtopic.php?f=2&t=62
- Instructions in French - http://angefg.wordpress.com/
You only need to open the port(s) mentioned in your OpenSim.ini and murmur.ini files.
- SIP Ports between viewers and the Mumble server.
- ICE Ports between simulators and the Mumble server.
Mumble/Whisper Test Regions
See whisper test region on Francogrid:
- Hypergrid link at (6995,7004) from OpenSimulator 0.6.9: 188.8.131.52:9011:WhisperTest
- Please list any limitations here.
- Whisper can ONLY run on one region per opensim server, meaning that if you want whisper to work on all your regions each region must have its own opensim server(opensim.exe).
How it works
On simulator startup
- The region module establishes two connections - one to the mumble server and a callback so that the mumble server can communicate with it.
On viewer connection to simulator
1. The region module sets up ProvisionVoiceAccountRequest, ParcelVoiceInfoRequest and ChatSessionRequest capabilities. The URLs for these are passed back to the viewer.
2. The viewer calls the ProvisionVoiceAccountRequest capability.
3. The region module returns
<llsd> <map> <key>username</key> <string>xKOBATaJvQKmCHmLnkDV_qg==</string> <key>password</key> <string>uBATaJvQKmCHmLnkD</string> <key>voice_sip_uri_hostname</key> <string>184.108.40.206</string> <key>voice_account_server_name</key> <string>tcp://220.127.116.11:64737</string> </map> </llsd>
to the viewer where voice_sip_uri_hostname is the murmur_host configured in [MurmurVoice], voice_account_server_name is the murmur_host combined with the port from murmur.ini (Murmur configuration file), username is a base64 version of the user's UUID and password is a base64 version of part of the user's UUID.
4. The viewer calls the ProvisionVoiceInfoRequest capability.
5. The region module registers the user with the earlier username and password to a voice channel which has the name of the parcel UUID. If this doesn't already exist then it is created.
6. If everything goes according to plan, then the region module returns
<llsd> <map> <key>parcel_local_id</key> <integer>1</integer> <key>region_name</key> <string>t3</string> <key>voice_credentials</key> <map> <key>channel_uri</key> <string>18.104.22.168:64737</string> </map> </map> </llsd>
7. The viewer passes this back to the voice client.
8. The voice client connects directly to the mumble server.
Other OpenSimulator Voice Solutions
Vivox - It is also possible to use the standard Vivox setup if you have access to Vivox services, and a licence to use them in your setup.