Repository navigation
Releases: BioDream-LLC/bitvoice
Release list
BitVoice v0.1.9
BitVoice v0.1.9: speech to text built in, and what building a CAD against BitVoice found, fixed.
Speech to text on your own server
- BitVoice now runs whisper.cpp itself (AI > Who writes speech down > This server): it fetches the model it is told to (checked by its SHA-256), starts whisper-server on 127.0.0.1, watches it and restarts it. Transcripts, voicemail text and live 911 transcripts then need no AI service and send nothing off the server. Each download now carries a signed whisper-server built for it (static; Metal on Apple silicon).
- Or point it at any whisper-server or OpenAI-compatible …/audio/transcriptions service, with no language model at all.
911 (public-safety lab), found by building a CAD against it
- A voice 911 call from the ESInet or a CAMA trunk is never refused or left unanswered: a route that would hang up, ring nobody, or ring out unanswered rings every call-taker until one answers.
- A 911 call is never dropped by a transfer. A transfer that cannot connect (an extension with no phone, nobody answering) goes back to the call-taker, or rings every call-taker if they already hung up; never voicemail.
- Any call: a phone that hangs up right after asking for a blind transfer (many do) releases only itself; before, it ended the whole call.
- A call whose caller's sound stops for a minute is ended and says why.
- Live 911 transcripts (call.transcript events) for the 911 screen and CAD.
- EIDOs and radio events go to CAD only by https, or plain http within the same computer: a new plain-http address off this computer is refused on save, an old one is never sent to (Health shows it red). Health also warns when the ALI spill crosses the network unencrypted, and when the PSAP has no agency ID.
- Programs with a token may name the dispatcher they act for (X-BitVoice-On-Behalf-Of); records say who took each 911 call.
Also
- Calls say when a side sent no sound, and whether their sound was encrypted; trunks can require encryption.
- Commercial carrier tried (SIP.US): registration and calls out over UDP and TLS.
- Fax boxes with a spaced identity could not call out; calls a provider sends over its own TLS/TCP connection are taken as the trunk's. Found against spandsp, Kamailio and FreeSWITCH.
- Saving AI settings with no model removes the saved key.
- Telephony cards: restarting the bridge no longer leaves a PRI with no B-channels (found on the real DAHDI driver).
- Cloud images start every server new; Terraform tried with OpenTofu; Android app tried on a real phone.
Downloads are signed (Updates checks them); SHA256SUMS lists every archive.
BitVoice v0.1.8
BitVoice v0.1.8: what testing on real systems in the cloud found, fixed; NG911 Core Services completed; SS7 link sets.
Found on real systems and fixed
- Cluster failover: a call whose phone was on the server taking over was dropped (that leg was sent a re-INVITE through its own server). It is now kept, and only the other party moves.
- A server that restarted forgot its phones' registrations until they registered again. They are now kept across restarts.
- Servers of a cluster on public addresses shared one public address, so after a takeover the provider kept sending sound to the stopped server. Each server may now have its own public address (Servers), and phones and servers on a private network always get the local address.
- Calls to providers offered a browser's 48 kHz key-press format to G.711 carriers. Offers now keep key presses only at the clocks of the codecs offered.
- Windows Server: the installer's health check failed under Windows PowerShell 5.1, so the install reported failure though BitVoice was running. Fixed; the installer also says when the network is one Windows calls Public, and prints the firewall rule to add.
- FreePBX migration: a real FreePBX 17 backup (70 MB, mostly sound files and call history) was refused as too large. Backups are now read as a stream, up to 512 MB, keeping only the configuration.
New
- SS7 link sets of up to 16 links. Spans with the same point codes share one link set, with load sharing, changeover (COO/COA with retrieval, ECO, or by time) and changeback (CBD/CBA). Tested against libss7 with two links and one cut in the middle of a call.
- NG911 Core Services (lab):
- the LIS locates devices by network address (address ranges, MAC addresses, or the requester's own address);
- the BCF inspects media (wrong source, payload types not offered, malformed, oversized, floods);
- the ESRP subscribes to each PSAP's queue and service state (NENA state events) and passes over one that cannot take calls, and tells other elements its own;
- address validation suggests the nearest valid addresses and checks a position against the address's point.
- A feature maturity table, in the README and in the manual: what is field-tested, checked against a reference implementation, software-tested only, lab, or not offered.
Tried for real on Amazon EC2
- An Asterisk carrier and desk phone across the internet, with MOS 4.4.
- Cluster failover after kill -9 and after a planned stop.
- Installs on Ubuntu (x86 and Arm), Debian 12, Amazon Linux 2023 and Windows Server 2022.
- Capacity on c7g.large, c7i.large and t4g.small: 200 calls at once with no loss.
- A real FreePBX 17.0.33 backup, imported whole.
- SNMP with net-snmp.
- S3 archive and AWS Secrets Manager.
- AI transcripts and summaries through OpenRouter.
- H.323 call set-up with Asterisk's chan_ooh323.
Every archive's program is signed with BioDream's release key; check it against SHA256SUMS, or let the one-command installer do it.
BitVoice v0.1.7
Install in one command
curl -fsSL https://raw.githubusercontent.com/BioDream-LLC/bitvoice/main/deploy/install.sh | sh # Linux (systemd), macOSirm https://raw.githubusercontent.com/BioDream-LLC/bitvoice/main/deploy/install.ps1 | iex # WindowsThe installers check the archive against SHA256SUMS and the program against BioDream's release signature, install a service that starts by itself, and upgrade in place when run again.
New: judges that give their reasons
- Check every situation (Call flow): BitVoice tries your whole call plan in every situation it can be in, not a sample: every combination of open and closed schedules in the coming year, every day/night toggle setting, every incoming number, every menu key and no-answer, and every extension dialling the emergency numbers. It lists calls that end nowhere, loops, things nothing routes to, branches no situation ever takes, and emergency calls that rest on one trunk; Try this call traces any of them in the simulator. The same check runs on Ask proposals and before restoring an old revision.
- How it was routed: every call record says, in plain words, what decided where the call went: the route, the hours, toggles, scripts, menu keys, forwards and trunks.
- Toll-fraud guard (Settings, off by default): judges every call out of the country before it is placed. A first call to a country is reported; outside business hours, or from outside the office (a dial-in, a call forwarded out), it needs a PIN; a burst of calls abroad, or a first call while someone is guessing passwords, is refused. Emergency calls are never stopped, and what cannot be measured asks for a PIN rather than being assumed safe. Decisions are listed on Security.
- Trunk health judge: tells a provider that is down from this server's own internet link failing, and a failed keep-alive from a trunk that still carries calls; a trunk judged unhealthy is tried after the others, never removed.
- Call quality diagnosis compares both halves of a call to say which side lost the sound. Recording consent follows the most protective rule of everyone on the call. A 911 location check after a rebid says which location to show first.
- How BitVoice decides (Security): the rulebooks the judges use, each checked in every combination of its facts before it is used.
Fixed
- On macOS the installed service keeps the Mac awake (
caffeinate): a sleeping Mac answers no calls, and its maintenance sleeps froze the server for 13 to 27 seconds at a time. - Viewers see a plain "administrators only" note instead of endless spinners or empty lists on administrators' pages.
- A second menu, schedule, script, toggle, campaign or conference room gets a numbered default name.
- ⌘K opens the page named what you typed before pages that only list it among their keywords.
- The dashboard shows the public address phones connect to.
Try it first at https://demo.bitvoice.org (sign in as demo / try-bitvoice-demo).
BitVoice v0.1.6
Install in one command
curl -fsSL https://raw.githubusercontent.com/BioDream-LLC/bitvoice/main/deploy/install.sh | sh # Linux (systemd), macOSirm https://raw.githubusercontent.com/BioDream-LLC/bitvoice/main/deploy/install.ps1 | iex # WindowsThe installers check the archive against SHA256SUMS and the program against BioDream's release signature, install a service that starts by itself, and upgrade in place when run again.
New
- Move from FreePBX in one step: Import reads a whole Backup & Restore backup (FreePBX 13 to 17, or a mysqldump of its database): extensions with their SIP passwords and voicemail PINs, PJSIP and chan_sip trunks, outbound and incoming routes, ring groups, queues with penalties. The preview lists what cannot come over. Step-by-step guide in the manual.
- Call scripts: JavaScript or Lua that runs a whole call (play, say, collect keys, record, ring someone, transfer, hang up), sandboxed with step and time limits and a fixed fallback; dialable, and tried in the editor with the keys a caller would press.
- ARI applications (Stasis): calls handed to your own program over ARI, with playback, recordings, keys, variables, mixing bridges, continue and originate-into-app.
- More AMI: QueuePause/Add/Remove, Agents, ParkedCalls, ConfBridge actions, MailboxCount/Status, (Un)PauseMonitor, state lists, Getvar, Filter, UserEvent; DialBegin/End, Hold, PeerStatus, MessageWaiting and ConfbridgeJoin/Leave events.
Fixed
- SS7: the link could fail to come up on a single-CPU machine, and calls could start before the circuit reset was acknowledged.
- PostgreSQL: concurrent changes to a document that did not exist yet could lose one of them.
- Android app: crashed on every start once its permissions were granted. Both apps and pairing links are now HTTPS only.
- The browser phone: someone who is not an administrator now signs it in with the extension's password; the phone event stream no longer misses a call that arrives right after it connects.
- The Scripts page now shows its live list of runs.
- Many timing-dependent tests made robust; CI green on Linux (race, SQLite and PostgreSQL), macOS, Windows, the browser tests and the installers.
Check a download with shasum -a 256 -c SHA256SUMS --ignore-missing. Programs carry and are signed by the release key M6UaGaLM1T0SekufRzAlUSeSTjfxpVL18YHE5eKkKxY=.
BitVoice v0.1.5
BitVoice v0.1.5. Signed: every program carries BioDream's release key, and the Updates page of v0.1.3 and later installs it only if its signature checks.
Phone system
- Release Link Trunk transfer on DMS-100 PRI lines, and EuroISDN advice of charge (charges kept on the call record).
- BRI lines, E&M trunks on T1, MFC-R2 on E1 and SS7, all through
bitvoice-dahdi, each tested against libpri, OpenR2 or libss7. - G.723.1 converted through ffmpeg when it is installed.
Public safety (lab track: off until switched on in Settings, not certified)
- 911: TTY, real-time text, text to 911 (MSRP, now over TLS too), CAMA trunks, and location by callback number by HELD or the legacy ALI link (network or serial port, read by your provider's layout). Also a call map, answer-time reports, report layouts for your state's form, and test calls.
- Caller video and photos by link (WHIP/WHEP). Live video is recorded with its SHA-256, and photos, clips and recordings are linked in the EIDO sent to CAD. Media opens blurred until revealed, and an exposure report shows who viewed it.
- Radio console: emergency acknowledgement, simulselect, unit aliases and positions. Talkgroups sending P25 Phase 2 half-rate voice that the console can't decode are marked "Silent here".
- NG911 Core Services:
- a LIS, a forest guide, and a BCF with STIR/SHAKEN checks and bad actors
- the i3 logging service and the i3 web services: a Policy Store whose signed policies the ESRP runs, discrepancy reports, geocode and MSAG conversion, ADR, service/agency locator, dequeue registration, a test-call generator
- checked against NENA's published definitions and EIDO schema
Checked against Wireshark (MSRP, MSRP over TLS, RTT), spandsp (TTY), ffmpeg and ffprobe (video recordings), ExifTool (photo and clip metadata) and OpenSSL (log signatures).
Verify the downloads with SHA256SUMS. The public key is in the README.
BitVoice v0.1.4
The biggest release yet: the gaps between BitVoice and FreePBX/Asterisk, closed one by one. Everything below is in the web interface, the manual (75 chapters, in every archive) and the browser tests.
Calls and routing
- Day/night toggles (FreePBX's call flow control) with
*28codes and busy-lamp keys; PIN sets (account codes) on outbound routes; caller ID lookup from your CRM or OpenCNAM - Dial-by-name directories, DISA, wake-up calls and hotel rooms with a FIAS link to the property-management system
- More queue strategies, member penalties, prompts in eight languages, hold music per queue and extension, MP3 hold music and internet radio
- HD conference rooms (16 kHz), and video conference rooms: follow the speaker, show the leader, or a grid of everyone (up to 3 by 3, made by ffmpeg)
- STIR/SHAKEN signing of outgoing calls
Contact centre
- Outbound dialer: preview, progressive, power and predictive campaigns with an abandon-rate limit, calling hours, answering-machine detection, opt-out by pressing 9, a do-not-call list and the national registry's file imported
- One inbox for the chat box on your website, WhatsApp (Cloud API, with message templates after 24 hours), Facebook Messenger and texts
- Staff chat and presence in the portal
- Voice bots over AudioSocket, and ARI external media
Phones, trunks and cards
- SIP over WebSocket for WebRTC softphones (tested with JsSIP and SIP.js), and a built-in TURN server for networks that block UDP
- Skinny (SCCP) phones, MGCP gateways and H.323 trunks
- Telephony cards through
bitvoice-dahdi(in the Linux archives): analogue ports and T1/E1 PRI, user or network side, with caller names, redirecting and connected numbers, hold, and transfers handed to the phone company (2BCT, ETSI ECT); tested against libpri - Desk-phone set-up for Fanvil, Cisco multiplatform, Mitel/Aastra, Sangoma, Algo and CyberData
Codecs: AMR and AMR-WB, iLBC, Speex, G.726-24/40 (all bit-exact with their reference code), G.723.1 passed through, and video conversion between H.264 and VP8 with ffmpeg.
Running it
- Let's Encrypt certificates (http-01 and tls-alpn-01), with advice when port 80 will not open and a test of each name from the internet
- An SNMP agent with traps, and more call-record outputs
- The web interface is HTTPS only
Not tried on real equipment yet: the new phone brands, PRI on real switches, Skinny/MGCP/H.323 equipment, real carriers with the dialer, and Meta's live APIs. Not built: BRI, E&M, MFC-R2, SS7; G.723.1 conversion.
Install: unpack and run bitvoice (bitvoice.exe on Windows); a browser opens on the setup wizard. Each program is signed with BioDream's release key and comes with its .sig file; a v0.1.3 server installs this release from its Updates page. Check downloads against SHA256SUMS.
BitVoice v0.1.3
BitVoice v0.1.3 is the first signed release.
- Signed programs. Every program carries BioDream's release key, and its signature is beside it in the archive (
bitvoice.sig, orbitvoice.exe.sigon Windows). The Updates page of v0.1.3 and later installs only programs signed with that key: an unsigned file, one signed by anyone else, or one changed by a single byte is refused. - Upgrading from v0.1.2 or earlier: those versions carry no key and accept any program. Install v0.1.3 by hand once (replace the program and start it again, or upload it on Updates); from then on every update is checked.
- Fixed: a race between changing a trunk's settings and the background check of that trunk, found by the race detector in CI.
- Archives name no person: files are owned by root.
Everything in v0.1.2 is unchanged. The public key, for checking a signature yourself (ed25519, base64):
M6UaGaLM1T0SekufRzAlUSeSTjfxpVL18YHE5eKkKxY=
Each archive holds the program, its signature, LICENSE, NOTICE and the manual as a PDF. Check downloads against SHA256SUMS.
BitVoice v0.1.2
BitVoice v0.1.2 is the office phone system release: the features people expect from FreePBX and Asterisk, all set up in the web interface.
New
- Conference rooms: PIN and leader PIN, wait for the leader, members joining muted (press 1 to ask to speak), lock, recording, and a live view to mute or remove people.
- Forwarding and do not disturb from the phone:
*72/*73always,*90/*91when busy,*52/*53when not answered,*78/*79/*76do not disturb. - Follow-me (
*21): the desk first, then other numbers one after another or together; press 1 to take the call, so a mobile's voicemail never answers it. - Call pickup (
*8for a group,**and an extension for one phone), intercom with auto-answer (*80), and company and personal speed dials (*0). Every code can be changed on the new Feature codes page. - Staff portal at
#/me: people sign in with their extension and voicemail PIN to set do not disturb, forwarding, follow-me and speed dials, hear their voicemail, record their greeting and see their own calls. - Hosted organisations: many phone systems on one server, each with its own data, web address or domain and administrators, with limits on extensions, calls at once, storage and AI use, and suspension. Emergency calls are never refused.
- IAX2 trunks (RFC 5456), registering either way, tested against Asterisk 23.
- Codecs: G.726 (32 and 16 kbit/s) and GSM, converted to and from all the others.
- A new manual: 63 chapters in six parts with 63 diagrams, about 90 pages in the PDF.
Changed
- The 911 answering-point profile, the radio dispatch console and NG911 Core Services are now a lab and design-partner track: off the menu until Public-safety profiles (lab) is switched on in Settings, with a notice on their screens. A server where one is already set up keeps them in the menu. They are not certified and not yet tried with a live ESInet, P25 system or CAD. Emergency calls from your own phones are unaffected and always on.
- A test now fails if any setting has no screen in the web interface.
Fixed
- Windows: when the SIP port is chosen automatically and the first pick is reserved by Windows, BitVoice tries another.
- A race between two parts of a call when a transaction ended, found by the race detector.
Not in this release: telephony cards (DAHDI): analogue lines and ISDN connect through SIP gateways. iLBC, Speex and AMR codecs.
Each archive holds the program, LICENSE, NOTICE and the manual as a PDF. Check downloads against SHA256SUMS. Builds are not signed for the in-app updater yet.