FreeCalypso > hg > freecalypso-tools
comparison doc/Voice-memo-utils @ 909:1e9fe07f8f09
doc/Voice-memo-utils: new article
| author | Mychaela Falconia <falcon@freecalypso.org> |
|---|---|
| date | Thu, 29 Dec 2022 21:03:11 +0000 |
| parents | |
| children |
comparison
equal
deleted
inserted
replaced
| 908:3aca343be11c | 909:1e9fe07f8f09 |
|---|---|
| 1 The full Calypso hw+fw solution as delivered by TI (the relevant components here | |
| 2 are the DSP, the official L1 code and RiViera Audio Service) implements an | |
| 3 interesting feature called voice memos. The voice memo feature itself, plus | |
| 4 FreeCalypso-added AT commands that exercise it, are described in the | |
| 5 Voice-memo-feature article in our separate freecalypso-docs repository; the | |
| 6 present document describes the available FC host tools utilities for working | |
| 7 with these voice memo recordings. | |
| 8 | |
| 9 FreeCalypso tools for decoding voice memo files | |
| 10 =============================================== | |
| 11 | |
| 12 If you have recorded a voice memo with AT@VMR and then read it out with fc-fsio, | |
| 13 you can use additional FC tools to analyze it. The following tools are | |
| 14 available, split between FC host tools and GSM codec libs & utilities packages: | |
| 15 | |
| 16 * fc-vm2gsmx (new with fc-host-tools-r18) takes a binary VM recording (as you | |
| 17 would read out with fc-fsio) and converts it into extended-libgsm (gsmx) | |
| 18 format defined in our GSM codec libraries & utilities package. This gsmx | |
| 19 format is an extension of the classic libgsm (GSM 06.10) format, adding the | |
| 20 possibility of SID frames and BFI markers (frame gaps) in addition to regular | |
| 21 speech frames, thus it can represent the content of a voice memo recording | |
| 22 made in DTX mode. These gsmx files can then be decoded into playable WAV | |
| 23 with our gsmfr-decode utility. | |
| 24 | |
| 25 * fc-vm2hex (dates back to fc-host-tools-r5) converts a binary VM recording into | |
| 26 ASCII hex format, similar to the old (2016) TCH DL recording format before it | |
| 27 was extended in late 2022. Every fully-written frame is emitted in the hex | |
| 28 output as 3 space-separated hex status words followed by a block of 66 hex | |
| 29 digits giving the FR1 codec frame in the unchanged bit order of TI's DSP, and | |
| 30 every skipped frame (one for which only status word 0 was written into the | |
| 31 memo file) is emitted in the hex output as just that one word. The hex output | |
| 32 from fc-vm2hex can be further fed to gsmfr-dlcap-parse utility (gsm-codec-lib | |
| 33 package) for deeper analysis. | |
| 34 | |
| 35 FreeCalypso tools for external generation of voice memo files | |
| 36 ============================================================= | |
| 37 | |
| 38 Using FreeCalypso tools, you can produce an external speech recording in GSM | |
| 39 06.10 FR1 codec format, convert it into TCS211 VM format, upload it into FC | |
| 40 device FFS with fc-fsio, and then play these externally-produced voice memos | |
| 41 with AT@VMP. The steps are as follows: | |
| 42 | |
| 43 1) You can use gsmfr-encode to FR1-encode a speech sample from WAV into classic | |
| 44 .gsm format, or gsmfr-encode-r if the source is raw BE instead of WAV. | |
| 45 Alternatively, you can use any other off-the-shelf software that can encode | |
| 46 FR1 and write libgsm format; SoX shipped with Slackware includes the | |
| 47 necessary support. | |
| 48 | |
| 49 2) fc-gsm2vm (unchanged since fc-host-tools-r5) converts a .gsm recording into | |
| 50 non-DTX TCS211 VM format. | |
| 51 | |
| 52 At the present time we don't have any tools for producing external DTX-enabled | |
| 53 VM recordings: the main limitation is that at least to this Mother's knowledge, | |
| 54 the published source software community does not currently possess a GSM 06.10 | |
| 55 encoding library that has been extended with VAD and DTX functions. There is | |
| 56 classic libgsm from 1990s, used by everyone in the FOSS community who needs a | |
| 57 GSM 06.10 encoder or decoder, but it doesn't do DTX; we (FreeCalypso and | |
| 58 Themyscira Wireless) have produced our own libgsmfrp front-end that implements | |
| 59 Rx DTX handler functions (that's how we can properly decode FR1 streams that | |
| 60 contain SIDs and/or missing frames), but it doesn't help with DTX encoding. | |
| 61 Therefore, our ability to produce TCS211-compatible VM recordings externally is | |
| 62 currently limited to non-DTX mode. |
