annotate doc/Voice-memo-utils @ 929:ab771ce34fac

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