From ba1c314ab26651bf99518f465c55652252bc556a Mon Sep 17 00:00:00 2001 From: Jim Tittsler Date: Wed, 13 Dec 2023 11:10:13 +0900 Subject: [PATCH 01/23] Fix typos --- doc/codec2.tex | 70 +++++++++++++++++++++++++------------------------- 1 file changed, 35 insertions(+), 35 deletions(-) diff --git a/doc/codec2.tex b/doc/codec2.tex index 27181a2..4bbffee 100644 --- a/doc/codec2.tex +++ b/doc/codec2.tex @@ -89,10 +89,10 @@ Recently, machine learning has been applied to speech coding. This technology p \subsection{Speech in Time and Frequency} -To explain how Codec 2 works, lets look at some speech. Figure \ref{fig:hts2a_time} shows a short 40ms segment of speech in the time and frequency domain. On the time plot we can see the waveform is changing slowly over time as the word is articulated. On the right hand side it also appears to repeat itself - one cycle looks very similar to the last. This cycle time is the ``pitch period", which for this example is around $P=35$ samples. Given we are sampling at $F_s=8000$ Hz, the pitch period is $P/F_s=35/8000=0.0044$ seconds, or 4.4ms. +To explain how Codec 2 works, let's look at some speech. Figure \ref{fig:hts2a_time} shows a short 40ms segment of speech in the time and frequency domain. On the time plot we can see the waveform is changing slowly over time as the word is articulated. On the right hand side it also appears to repeat itself - one cycle looks very similar to the last. This cycle time is the ``pitch period", which for this example is around $P=35$ samples. Given we are sampling at $F_s=8000$ Hz, the pitch period is $P/F_s=35/8000=0.0044$ seconds, or 4.4ms. \begin{figure} [H] -\caption{ A 40ms segment from the word ``these" from a female speaker, sampled at 8kHz. Top is a plot against time, bottom (blue) is a plot of the same speech against frequency. The waveform repeats itself every 4.3ms ($F_0=230$ Hz), this is the ``pitch period" of this segment. The red crosses are the sine wave amplitudes, explained in the text.} +\caption{ A 40ms segment from the word ``these" from a female speaker, sampled at 8kHz. Top is a plot against time, bottom (blue) is a plot of the same speech against frequency. The waveform repeats itself every 4.3ms ($F_0=230$ Hz); this is the ``pitch period" of this segment. The red crosses are the sine wave amplitudes, explained in the text.} \label{fig:hts2a_time} \begin{center} \input hts2a_37_sn.tex @@ -103,14 +103,14 @@ To explain how Codec 2 works, lets look at some speech. Figure \ref{fig:hts2a_ti Now if the pitch period is 4.4ms, the pitch frequency or \emph{fundamental} frequency $F_0$ is about $1/0.0044 \approx 230$ Hz. If we look at the blue frequency domain plot at the bottom of Figure \ref{fig:hts2a_time}, we can see spikes that repeat every 230 Hz. If the signal is repeating itself in the time domain, it also repeats itself in the frequency domain. Those spikes separated by about 230 Hz are harmonics of the fundamental frequency $F_0$. -Note that each harmonic has it's own amplitude, that varies across frequency. The red line plots the amplitude of each harmonic. In this example there is a peak around 500 Hz, and another, broader peak around 2300 Hz. The ear perceives speech by the location of these peaks and troughs. +Note that each harmonic has its own amplitude, that varies across frequency. The red line plots the amplitude of each harmonic. In this example, there is a peak around 500 Hz and another broader peak around 2300 Hz. The ear perceives speech by the location of these peaks and troughs. \subsection{Sinusoidal Speech Coding} -A sinewave will cause a spike or spectral line on a spectrum plot, so we can see each spike as a small sine wave generator. Each sine wave generator has it's own frequency that are all multiples of the fundamental pitch frequency (e.g. $230, 460, 690,...$ Hz). They will also have their own amplitude and phase. If we add all the sine waves together (Figure \ref{fig:sinusoidal_model}) we can produce reasonable quality synthesised speech. This is called sinusoidal speech coding and is the speech production ``model" at the heart of Codec 2. +A sinewave will cause a spike or spectral line on a spectrum plot, so we can see each spike as a small sine wave generator. Each sine wave generator has its own frequency that are all multiples of the fundamental pitch frequency (e.g. $230, 460, 690,...$ Hz). They will also have their own amplitude and phase. If we add all the sine waves together (Figure \ref{fig:sinusoidal_model}) we can produce reasonable quality synthesised speech. This is called sinusoidal speech coding and is the speech production ``model" at the heart of Codec 2. \begin{figure}[h] -\caption{The sinusoidal speech model. If we sum a series of sine waves, we can generate a speech signal. Each sinewave has it's own amplitude ($A_1,A_2,... A_L$), frequency, and phase (not shown). We assume the frequencies are multiples of the fundamental frequency $F_0$. $L$ is the total number of sinewaves we can fit in 4 kHz.} +\caption{The sinusoidal speech model. If we sum a series of sine waves, we can generate a speech signal. Each sinewave has its own amplitude ($A_1,A_2,... A_L$), frequency, and phase (not shown). We assume the frequencies are multiples of the fundamental frequency $F_0$. $L$ is the total number of sinewaves we can fit in 4 kHz.} \label{fig:sinusoidal_model} \begin{center} \begin{tikzpicture}[>=triangle 45,x=1.0cm,y=1.0cm] @@ -136,21 +136,21 @@ A sinewave will cause a spike or spectral line on a spectrum plot, so we can see \end{center} \end{figure} -The model parameters evolve over time, but can generally be considered constant for a short time window (a few 10s of ms). For example pitch evolves over time, moving up or down as a word is articulated. +The model parameters evolve over time, but can generally be considered constant for a short time window (a few 10s of ms). For example, pitch evolves over time, moving up or down as a word is articulated. -As the model parameters change over time, we need to keep updating them. This is known as the \emph{frame rate} of the codec, which can be expressed in terms of frequency (Hz) or time (ms). For sampling model parameters Codec 2 uses a frame rate of 10ms. For transmission over the channel we reduce this to 20-40ms, in order to lower the bit rate. The trade off with a lower frame rate is reduced speech quality. +As the model parameters change over time, we need to keep updating them. This is known as the \emph{frame rate} of the codec, which can be expressed in terms of frequency (Hz) or time (ms). For sampling model parameters, Codec 2 uses a frame rate of 10ms. For transmission over the channel, we reduce this to 20-40ms in order to lower the bit rate. The trade off with a lower frame rate is reduced speech quality. The parameters of the sinusoidal model are: \begin{enumerate} \item The frequency of each sine wave. As they are all harmonics of $F_0$ we can just send $F_0$ to the decoder, and it can reconstruct the frequency of each harmonic as $F_0,2F_0,3F_0,...,LF_0$. We used 5-7 bits/frame to represent $F_0$ in Codec 2. \item The amplitude of each sine wave, $A_1,A_2,...,A_L$. These ``spectral amplitudes" are really important as they convey the information the ear needs to understand speech. Most of the bits are used for spectral amplitude information. Codec 2 uses between 18 and 50 bits/frame for spectral amplitude information. \item Voicing information. Speech can be approximated into voiced speech (vowels) and unvoiced speech (like consonants), or some mixture of the two. The example in Figure \ref{fig:hts2a_time} above is voiced speech. So we need some way to describe voicing to the decoder. This requires just a few bits/frame. -\item The phase of each sine wave. Codec 2 discards the phases of each harmonic at the encoder and reconstruct them at the decoder using an algorithm, so no bits are required for phases. This results in some drop in speech quality. +\item The phase of each sine wave. Codec 2 discards the phases of each harmonic at the encoder and reconstructs them at the decoder using an algorithm, so no bits are required for phases. This results in some drop in speech quality. \end{enumerate} \subsection{Codec 2 Encoder and Decoder} -This section explains how the Codec 2 encoder and decoder works using block diagrams. +This section explains how the Codec 2 encoder and decoder work using block diagrams. \begin{figure}[h] \caption{Codec 2 Encoder.} @@ -186,13 +186,13 @@ The encoder is presented in Figure \ref{fig:codec2_encoder}. Frames of input sp Yet another algorithm is used to determine if the frame is voiced or unvoiced. This works by comparing the spectrum to what we would expect for voiced speech (e.g. lots of spectral lines). If the energy is more random and continuous rather than discrete lines, we consider it unvoiced. -Up until this point the processing happens at a 10ms frame rate. However in the next step we ``decimate`` the model parameters - this means we discard some of the model parameters to lower the frame rate, which helps us lower the bit rate. Decimating to 20ms (throwing away every 2nd set of model parameters) doesn't have much effect, but beyond that the speech quality starts to degrade. So there is a trade off between decimation rate and bit rate over the channel. +Up until this point the processing happens at a 10ms frame rate. However, in the next step, we ``decimate`` the model parameters - this means we discard some of the model parameters to lower the frame rate, which helps us lower the bit rate. Decimating to 20ms (throwing away every 2nd set of model parameters) doesn't have much effect, but beyond that the speech quality starts to degrade. So there is a trade off between decimation rate and bit rate over the channel. -Once we have the desired frame rate, we ``quantise" each model parameter. This means we use a fixed number of bits to represent it, so we can send the bits over the channel. Parameters like pitch and voicing are fairly easy, but quite a bit of DSP goes into quantising the spectral amplitudes. For the higher bit rate Codec 2 modes, we design a filter that matches the spectral amplitudes, then send a quantised version of the filter over the channel. Using the example in Figure \ref{fig:hts2a_time} - the filter would have a band pass peaks at 500 and 2300 Hz. It's frequency response would follow the red line. The filter is time varying - we redesign it for every frame. +Once we have the desired frame rate, we ``quantise" each model parameter. This means we use a fixed number of bits to represent it, so we can send the bits over the channel. Parameters like pitch and voicing are fairly easy, but quite a bit of DSP goes into quantising the spectral amplitudes. For the higher bit rate Codec 2 modes, we design a filter that matches the spectral amplitudes, then send a quantised version of the filter over the channel. Using the example in Figure \ref{fig:hts2a_time} - the filter would have a band pass peaks at 500 and 2300 Hz. Its frequency response would follow the red line. The filter is time varying - we redesign it for every frame. You'll notice the term ``estimate" being used a lot. One of the problems with model based speech coding is the algorithms we use to extract the model parameters are not perfect. Occasionally the algorithms get it wrong. Look at the red crosses on the bottom plot of Figure \ref{fig:hts2a_time}. These mark the amplitude estimate of each harmonic. If you look carefully, you'll see that above 2000Hz, the crosses fall a little short of the exact centre of each harmonic. This is an example of a ``fine" pitch estimator error, a little off the correct value. -Often the errors interact, for example the fine pitch error shown above will mean the amplitude estimates are a little bit off as well. Fortunately these errors tend to be temporary, and are sometimes not even noticeable to the listener - remember this codec is often used for HF/VHF radio where channel noise is part of the normal experience. +Often the errors interact, for example the fine pitch error shown above will mean the amplitude estimates are a little bit off as well. Fortunately, these errors tend to be temporary and are sometimes not even noticeable to the listener - remember this codec is often used for HF/VHF radio where channel noise is part of the normal experience. \begin{figure}[h] \caption{Codec 2 Decoder} @@ -200,7 +200,7 @@ Often the errors interact, for example the fine pitch error shown above will mea \begin{center} \begin{tikzpicture}[auto, node distance=2cm,>=triangle 45,x=1.0cm,y=1.0cm,align=center,text width=2cm] -\node [input] (rinput) {}; +\node [input] (input) {}; \node [block, right of=rinput,node distance=2cm] (dequantise) {Dequantise Interpolate}; \node [block, right of=dequantise,node distance=3cm] (recover) {Recover Amplitudes}; \node [block, right of=recover,node distance=3cm] (synthesise) {Synthesise Speech}; @@ -218,19 +218,19 @@ Often the errors interact, for example the fine pitch error shown above will mea \end{center} \end{figure} -Figure \ref{fig:codec2_decoder} shows the operation of the Codec 2 decoder. We take the sequence of bits received from the channel and recover the quantised model parameters, pitch, spectral amplitudes, and voicing. We then resample the model parameters back up to the 10ms frame rate using a technique called interpolation. For example say we receive a $F_0=200$ Hz pitch value then 20ms later $F_0=220$ Hz. We can use the average $F_0=210$ Hz for the middle 10ms frame. +Figure \ref{fig:codec2_decoder} shows the operation of the Codec 2 decoder. We take the sequence of bits received from the channel and recover the quantised model parameters, pitch, spectral amplitudes, and voicing. We then resample the model parameters back up to the 10ms frame rate using a technique called interpolation. For example, say we receive a $F_0=200$ Hz pitch value, then 20ms later $F_0=220$ Hz. We can use the average $F_0=210$ Hz for the middle 10ms frame. The phases of each harmonic are generated using the other model parameters and some DSP. It turns out that if you know the amplitude spectrum, you can determine a ``reasonable" phase spectrum using some DSP operations, which in practice is implemented with a couple of FFTs. We also use the voicing information - for unvoiced speech we use random phases (a good way to synthesise noise-like signals) - and for voiced speech we make sure the phases are chosen so the synthesised speech transitions smoothly from one frame to the next. -Frames of speech are synthesised using an inverse FFT. We take a blank array of FFT samples, and at intervals of $F_0$ insert samples with the amplitude and phase of each harmonic. We then inverse FFT to create a frame of time domain samples. These frames of synthesised speech samples are carefully aligned with the previous frame to ensure smooth frame-frame transitions, and output to the listener. +Frames of speech are synthesised using an inverse FFT. We take a blank array of FFT samples, and at intervals of $F_0$ insert samples with the amplitude and phase of each harmonic. We then inverse FFT to create a frame of time domain samples. These frames of synthesised speech samples are carefully aligned with the previous frame to ensure smooth frame-frame transitions and output to the listener. \subsection{Bit Allocation} -Table \ref{tab:bit_allocation} presents the bit allocation for two popular Codec 2 modes. One additional parameter is the frame energy, this is the average level of the spectral amplitudes, or ``AF gain" of the speech frame. +Table \ref{tab:bit_allocation} presents the bit allocation for two popular Codec 2 modes. One additional parameter is the frame energy, which is the average level of the spectral amplitudes, or ``AF gain" of the speech frame. At very low bit rates such as 700 bits/s, we use Vector Quantisation (VQ) to represent the spectral amplitudes. We construct a table such that each row of the table has a set of spectral amplitude samples. In Codec 2 700C the table has 512 rows. During the quantisation process, we choose the table row that best matches the spectral amplitudes for this frame, then send the \emph{index} of the table row. The decoder has a similar table, so can use the index to look up the spectral amplitude values. If the table is 512 rows, we can use a 9 bit number to quantise the spectral amplitudes. In Codec 2 700C, we use two tables of 512 entries each (18 bits total), the second one helps fine tune the quantisation from the first table. -Vector Quantisation can only represent what is present in the tables, so if it sees anything unusual (for example a different microphone frequency response or background noise), the quantisation can become very rough and speech quality poor. We train the tables at design time using a database of speech samples and a training algorithm - an early form of machine learning. +Vector Quantisation can only represent what is present in the tables, so if it sees anything unusual (for example, a different microphone frequency response or background noise), the quantization can become very rough and speech quality poor. We train the tables at design time using a database of speech samples and a training algorithm - an early form of machine learning. Codec 2 3200 uses the method of fitting a filter to the spectral amplitudes, this approach tends to be more forgiving of small variations in the input speech spectrum, but is not as efficient in terms of bit rate. @@ -258,7 +258,7 @@ Bit rate & 3200 & 700 \\ \subsection{Overview} -Codec 2 is based on sinusoidal \cite{mcaulay1986speech} and Multi-Band Excitation (MBE) \cite{griffin1988multiband} vocoders that were first developed in the late 1980s. Descendants of the MBE vocoders (IMBE, AMBE etc) have enjoyed widespread use in many applications such as VHF/UHF hand held radios and satellite communications. In the 1990s the author studied sinusoidal speech coding \cite{rowe1997techniques}, which provided the skill set and a practical, patent free baseline for starting the Codec 2 project: +Codec 2 is based on sinusoidal \cite{mcaulay1986speech} and Multi-Band Excitation (MBE) \cite{griffin1988multiband} vocoders that were first developed in the late 1980s. Descendants of the MBE vocoders (IMBE, AMBE etc) have enjoyed widespread use in many applications such as VHF/UHF handheld radios and satellite communications. In the 1990s the author studied sinusoidal speech coding \cite{rowe1997techniques}, which provided the skill set and a practical, patent free baseline for starting the Codec 2 project: Some features of the Codec 2 Design: \begin{enumerate} @@ -280,7 +280,7 @@ Both voiced and unvoiced speech is represented using a harmonic sinusoidal model \end{equation} where the parameters $A_m, \theta_m, m=1...L$ represent the magnitude and phases of each sinusoid, $\omega_0$ is the fundamental frequency in radians/sample, and $L=\lfloor \pi/\omega_0 \rfloor$ is the number of harmonics. -Figure \ref{fig:analysis} illustrates the processing steps in the sinusoidal analysis system at the core of the Codec 2 encoder. This algorithms described in this section are based on the work in \cite{rowe1997techniques}, with some changes in notation. +Figure \ref{fig:analysis} illustrates the processing steps in the sinusoidal analysis system at the core of the Codec 2 encoder. The algorithms described in this section are based on the work in \cite{rowe1997techniques}, with some changes in notation. \begin{figure}[h] \caption{Sinusoidal Analysis} @@ -345,7 +345,7 @@ r &= \frac{\omega_0 N_{dft}}{2 \pi} \end{equation} The DFT indexes $a_m, b_m$ select the band of $S_w(k)$ containing the $m$-th harmonic; $r$ maps the harmonic number $m$ to the nearest DFT index, and $\lfloor x \rceil$ is the rounding operator. This method of estimating $A_m$ is relatively insensitive to small errors in $F0$ estimation and works equally well for voiced and unvoiced speech. Figure $\ref{fig:hts2a_time}$ plots $S_w$ (blue) and $\{A_m\}$ (red) for a sample frame of female speech. -The phase is sampled at the centre of the band. For all practical Codec 2 modes the phase is not transmitted to the decoder so does not need to be computed. However speech synthesised using the phase is useful as a control during development, and is available using the \emph{c2sim} utility. +The phase is sampled at the centre of the band. For all practical Codec 2 modes, the phase is not transmitted to the decoder, so it does not need to be computed. However, speech synthesized using the phase is useful as a control during development and is available using the \emph{c2sim} utility. \subsection{Sinusoidal Synthesis} @@ -548,7 +548,7 @@ Where $n_0$ is a time shift that represents the pulse position relative to the c \begin{equation} \phi_m = - m \omega_0 n_0 \end{equation} -As we don't transmit any phase information the pulse position $n_0$ is unknown at the decoder. Fortunately the ear is insensitive to the absolute position of pitch pulses in voiced speech, as long as they evolve smoothly over time (discontinuities in phase are a characteristic of unvoiced speech). +As we don't transmit any phase information the pulse position $n_0$ is unknown at the decoder. Fortunately, the ear is insensitive to the absolute position of pitch pulses in voiced speech, as long as they evolve smoothly over time (discontinuities in phase are a characteristic of unvoiced speech). The excitation pulses occur at a rate of $\omega_0$ (one for each pitch period). The phase of the first harmonic advances by $N \phi_1$ radians over a synthesis frame of $N$ samples. For example if $\omega_1 = \pi /20$ (200 Hz), then over a (10ms $N=80$) sample frame, the phase of the first harmonic would advance $(\pi/20)80 = 4 \pi$ radians or two complete cycles. We therefore derive $n_0$ from the excitation phase of the fundamental, which we treat as a timing reference. Each frame we advance the phase of the fundamental: \begin{equation} @@ -563,7 +563,7 @@ n_0 &= -\phi_1 / \omega_0 \\ \end{split} \end{equation} -For unvoiced speech $E(z)$ is a white noise signal. At each frame we sample a random number generator on the interval $-\pi ... \pi$ to obtain the excitation phase of each harmonic. We set $F_0 = 50$ Hz to use a large number of harmonics $L=4000/50=80$ for synthesis to best approximate a noise signal. +For unvoiced speech $E(z)$ is a white noise signal. At each frame, we sample a random number generator on the interval $-\pi ... \pi$ to obtain the excitation phase of each harmonic. We set $F_0 = 50$ Hz to use a large number of harmonics $L=4000/50=80$ for synthesis to best approximate a noise signal. The second phase component is provided by sampling the phase of $H(z)$ at the harmonic centres. The phase spectra of $H(z)$ is derived from the magnitude response using minimum phase techniques. The method for deriving the phase spectra of $H(z)$ differs between Codec 2 modes and is described below in Sections \ref{sect:mode_lpc_lsp} and \ref{sect:mode_newamp1}. This component of the phase tends to disperse the pitch pulse energy in time, especially around spectral peaks (formants). @@ -577,7 +577,7 @@ Comparing to speech synthesised using original phases $\{\theta_m\}$ the followi \item If there are voicing errors, the speech can sound clicky or staticy. If voiced speech is mistakenly declared unvoiced, this model tends to synthesise annoying impulses or clicks, as for voiced speech $H(z)$ is relatively flat (broad, high frequency formants), so there is very little dispersion of the excitation impulses through $H(z)$. \item When combined with amplitude modelling or quantisation, such that $H(z)$ is derived from $\{\hat{A}_m\}$ there is an additional drop in quality. \item This synthesis model (e.g. a pulse train exciting a LPC filter) is effectively the same as a simple LPC-10 vocoders, and yet (especially when $arg[H(z)]$ is derived from unquantised $\{A_m\}$) sounds much better. Conventional wisdom (AMBE, MELP) says mixed voicing is required for high quality speech. -\item If $H(z)$ is changing rapidly between frames, it's phase contribution may also change rapidly. This approach could cause some discontinuities in the phase at the edge of synthesis frames, as no attempt is made to make sure that the phase tracks are continuous (the excitation phases are continuous, but not the final phases after filtering by $H(z)$). +\item If $H(z)$ is changing rapidly between frames, its phase contribution may also change rapidly. This approach could cause some discontinuities in the phase at the edge of synthesis frames, as no attempt is made to make sure that the phase tracks are continuous (the excitation phases are continuous, but not the final phases after filtering by $H(z)$). \item The recent crop of neural vocoders produce high quality speech using a similar parameters set, and notably without transmitting phase information. Although many of these vocoders operate in the time domain, this approach can be interpreted as implementing a function $\{ \hat{\theta}_m\} = F(\omega_0, \{Am\},v)$. This validates the general approach used here, and as future work Codec 2 may benefit from being augmented by machine learning. \end{enumerate} @@ -594,7 +594,7 @@ In this and the next section we explain how the codec building blocks above are \end{center} \end{figure} -The source-filter model of speech production was introduced above in Equation (\ref{eq:source_filter}). A spectrally flat excitation source $E(z)$ excites a filter $H(z)$ which models the magnitude spectrum of the speech. In Linear Predictive Coding (LPC), we define $H(z)$ as an all pole filter: +The source-filter model of speech production was introduced above in Equation (\ref{eq:source_filter}). A spectrally flat excitation source $E(z)$ excites a filter $H(z)$ which models the magnitude spectrum of the speech. In Linear Predictive Coding (LPC), we define $H(z)$ as an all-pole filter: \begin{equation} H(z) = \frac{G}{1-\sum_{k=1}^p a_k z^{-k}} = \frac{G}{A(z)} \end{equation} @@ -613,7 +613,7 @@ A(z) = \frac{P(z)+Q(z)}{2} \end{equation} Thus to transmit the LPC coefficients using LSPs, we first transform the LPC model $A(z)$ to $P(z)$ and $Q(z)$ polynomial form. We then solve $P(z)$ and $Q(z)$ for $z=e^{j \omega}$ to obtain $p$ LSP frequencies $\{\omega_i\}$. The LSP frequencies are then quantised and transmitted over the channel. At the receiver the quantised LSPs are then used to reconstruct an approximation of $A(z)$. More details on LSP analysis can be found in \cite{rowe1997techniques} and many other sources. -Figure \ref{fig:encoder_lpc_lsp} presents the LPC/LSP mode encoder. Overlapping input speech frames are processed every 10ms ($N=80$ samples). LPC analysis determines a set of $p=10$ LPC coefficients $\{a_k\}$ that describe the spectral envelope of the current frame and the LPC energy $E=G^2$. The LPC coefficients are transformed to $p=10$ LSP frequencies $\{\omega_i\}$. The source code for these algorithms is in \emph{lpc.c} and \emph{lsp.c}. The LSP frequencies are then quantised to a fixed number of bits/frame. Other parameters include the pitch $\omega_0$, LPC energy $E$, and voicing $v$. The quantisation and bit packing source code for each Codec 2 mode can be found in \emph{codec2.c}. Note the spectral magnitudes $\{A_m\}$ are not transmitted, but are still computed for use in voicing estimation (\ref{eq:voicing_snr}). +Figure \ref{fig:encoder_lpc_lsp} presents the LPC/LSP mode encoder. Overlapping input speech frames are processed every 10ms ($N=80$ samples). LPC analysis determines a set of $p=10$ LPC coefficients $\{a_k\}$ that describe the spectral envelope of the current frame and the LPC energy $E=G^2$. The LPC coefficients are transformed to $p=10$ LSP frequencies $\{\omega_i\}$. The source code for these algorithms is in \emph{lpc.c} and \emph{lsp.c}. The LSP frequencies are then quantised to a fixed number of bits/frame. Other parameters include the pitch $\omega_0$, LPC energy $E$, and voicing $v$. The quantisation and bit packing source code for each Codec 2 mode can be found in \emph{codec2.c}. Note the spectral magnitudes $\{A_m\}$ are not transmitted but are still computed for use in voicing estimation (\ref{eq:voicing_snr}). \begin{figure}[h] \caption{LPC/LSP Modes Encoder} @@ -653,7 +653,7 @@ Figure \ref{fig:encoder_lpc_lsp} presents the LPC/LSP mode encoder. Overlapping \end{center} \end{figure} -One of the problems with quantising spectral magnitudes in sinusoidal codecs is the time varying number of harmonic magnitudes, as $L=\pi/\omega_0$, and $\omega_0$ varies from frame to frame. As we require a fixed bit rate for our uses cases, it is desirable to have a fixed number of parameters. Using a fixed order LPC model is a neat solution to this problem. Another feature of LPC modelling combined with scalar LSP quantisation is some tolerance to variations in the input frequency response, e.g. due to microphone or anti-alias filter shape factors (see section \ref{sect:mode_newamp1} for more information on this issue). +One of the problems with quantising spectral magnitudes in sinusoidal codecs is the time varying number of harmonic magnitudes, as $L=\pi/\omega_0$, and $\omega_0$ varies from frame to frame. As we require a fixed bit rate for our use cases, it is desirable to have a fixed number of parameters. Using a fixed order LPC model is a neat solution to this problem. Another feature of LPC modelling combined with scalar LSP quantisation is some tolerance to variations in the input frequency response, e.g. due to microphone or anti-alias filter shape factors (see section \ref{sect:mode_newamp1} for more information on this issue). Some disadvantages \cite{makhoul1975linear} are the LPC spectrum $|H(e^{j \omega})|$ doesn't follow the spectral magnitudes $A_m$ exactly, in other words is requires a non-flat excitation spectrum to accurately model the amplitude spectrum. The slope of the LPC spectrum near 0 and $\pi$ must be 0, which means it does not track perceptually important low frequency information well. For high pitched speakers, LPC tends to place poles around single harmonics, rather than tracking the spectral envelope described by $\{Am\}$. All of these problems can be observed in Figure \ref{fig:hts2a_lpc_lsp}. Thus exciting the LPC model by a simple, spectrally flat $E(z)$ will result in some errors in the reconstructed magnitude speech spectrum. @@ -710,7 +710,7 @@ arg \left[ H(e^{j \omega_0 m}) \right] = arg \left[ \hat{H}(\lfloor m r \rceil) \end{center} \end{figure} -Prior to sampling the amplitude and phase, a frequency domain post filter is applied to the LPC power spectrum. The algorithm is based on the MBE frequency domain post filter \cite[Section 8.6, p 267]{kondoz1994digital}, which is turn based on the frequency domain post filter from McAulay and Quatieri \cite[Section 4.3, p 148]{kleijn1995speech}. The authors report a significant improvement in speech quality from the post filter, which has also been our experience when applied to Codec 2. The post filter is given by: +Prior to sampling the amplitude and phase, a frequency domain post filter is applied to the LPC power spectrum. The algorithm is based on the MBE frequency domain post filter \cite[Section 8.6, p 267]{kondoz1994digital}, which is in turn based on the frequency domain post filter from McAulay and Quatieri \cite[Section 4.3, p 148]{kleijn1995speech}. The authors report a significant improvement in speech quality from the post filter, which has also been our experience when applied to Codec 2. The post filter is given by: \begin{equation} \label{eq:lpc_lsp_pf} \begin{split} @@ -718,14 +718,14 @@ P_f(e^{j\omega}) &= g \left( R_w(e^{j \omega} \right))^\beta \\ R_w(^{j\omega}) &= A(e^{j \omega/ \gamma})/A(e^{j \omega}) \end{split} \end{equation} -where $g$ is chosen to normalise the gain of the post filter, and $\beta=0.2$, $\gamma=0.5$ are experimentally derived constants. The post filter raises the spectral peaks (formants), and lowers the inter-formant energy. The $\gamma$ term compensates for spectral tilt, providing equal emphasis at low and high frequencies. The authors suggest the post filter reduces the noise level between formants, an explanation commonly given to post filters used for CELP codecs where significant inter-formant noise exists from the noisy excitation source. However in harmonic sinusoidal codecs there is no excitation noise between formants in $E(z)$. Our theory is the post filter also acts to reduce the bandwidth of spectral peaks, modifying the energy distribution across the time domain pitch cycle which improves speech quality, especially for low pitched speakers. +where $g$ is chosen to normalise the gain of the post filter, and $\beta=0.2$, $\gamma=0.5$ are experimentally derived constants. The post filter raises the spectral peaks (formants), and lowers the inter-formant energy. The $\gamma$ term compensates for spectral tilt, providing equal emphasis at low and high frequencies. The authors suggest the post filter reduces the noise level between formants, an explanation commonly given to post filters used for CELP codecs where significant inter-formant noise exists from the noisy excitation source. However, in harmonic sinusoidal codecs, there is no excitation noise between formants in $E(z)$. Our theory is the post filter also acts to reduce the bandwidth of spectral peaks, modifying the energy distribution across the time domain pitch cycle which improves speech quality, especially for low pitched speakers. A disadvantage of the post filter is the need for experimentally derived constants. It performs a non-linear operation on the speech spectrum, and if mis-applied can worsen speech quality. As it's operation is not completely understood, it represents a source of future quality improvement. \subsection{Codec 2 700C} \label{sect:mode_newamp1} -To efficiently transmit spectral amplitude information Codec 2 700C uses a set of algorithms collectively denoted \emph{newamp1}. One of these algorithms is the Rate K resampler which transforms the variable length vectors of spectral magnitude samples to fixed length $K$ vectors suitable for vector quantisation. Figure \ref{fig:encoder_newamp1} presents the Codec 2 700C encoder. +To efficiently transmit spectral amplitude information, Codec 2 700C uses a set of algorithms collectively denoted \emph{newamp1}. One of these algorithms is the Rate K resampler which transforms the variable length vectors of spectral magnitude samples to fixed length $K$ vectors suitable for vector quantisation. Figure \ref{fig:encoder_newamp1} presents the Codec 2 700C encoder. \begin{figure}[H] \caption{Codec 2 700C (newamp1) Encoder} @@ -851,7 +851,7 @@ k = warp^{-1}(f,K) = \frac{mel(f)-mel(200)}{g} + 1 \end{center} \end{figure} -The input speech may be subject to arbitrary filtering, for example due to the microphone frequency response, room acoustics, and anti-aliasing filter. This filtering is fixed or slowly time varying. The filtering biases the target vectors away from the VQ training material, resulting in significant additional mean square error. The filtering does not greatly affect the input speech quality, however the VQ performance distortion increases and the output speech quality is reduced. This is exacerbated by operating in the log domain, the VQ will try to match very low level, perceptually insignificant energy near 0 and 4000 Hz. A microphone equaliser algorithm has been developed to help adjust to arbitrary microphone filtering. +The input speech may be subject to arbitrary filtering, for example, due to the microphone frequency response, room acoustics, and anti-aliasing filter. This filtering is fixed or slowly time-varying. The filtering biases the target vectors away from the VQ training material, resulting in significant additional mean square error. The filtering does not greatly affect the input speech quality, however the VQ performance distortion increases and the output speech quality is reduced. This is exacerbated by operating in the log domain, the VQ will try to match very low level, perceptually insignificant energy near 0 and 4000 Hz. A microphone equaliser algorithm has been developed to help adjust to arbitrary microphone filtering. For every input frame $l$, the equaliser (EQ) updates the dimension $K$ equaliser vector $\mathbf{e}$: \begin{equation} @@ -882,7 +882,7 @@ where $\mathbf{p}$ is a post filter vector. The post filter vector is generated \end{equation} where $G$ is an energy normalisation term, and $1.2 < P_{gain} < 1.5$ describes the amount if post filtering applied. $G$ and $P_{gain}$ are similar to $g$ and $\beta$ in the LPC/LSP post filter (\ref{eq:lpc_lsp_pf}). The $\mathbf{r}$ term is a high pass (pre-emphasis) filter with +20 dB/decade gain after 300 Hz ($f_k$ is given in (\ref{eq:warp})). The post filtering is applied on the pre-emphasised vector, then the pre-emphasis is removed from the final result. Multiplying by $P_{gain}$ in the $log$ domain is similar to the $\alpha$ power function in (\ref{eq:lpc_lsp_pf}); spectral peaks are moved up, and troughs pushed down. This filter enhances the speech quality but also introduces some artefacts. -Figure \ref{fig:decoder_newamp1} is the block diagram of the decoder signal processing. Cepstral techniques are used to synthesise a phase spectra $arg[H(e^{j \omega}])$ from $\hat{\mathbf{a}}$ using a minimum phase model. +Figure \ref{fig:decoder_newamp1} is the block diagram of the decoder signal processing. Cepstral techniques are used to synthesise a phase spectra $arg[H(e^{j \omega}])$ from $\hat{\mathbf{a}}$ using a minimum phase model. \begin{figure}[h] \caption{Codec 2 700C (newamp1) Decoder} @@ -916,11 +916,11 @@ Figure \ref{fig:decoder_newamp1} is the block diagram of the decoder signal proc Some notes on the Codec 2 700C \emph{newamp1} algorithms: \begin{enumerate} -\item The amplitudes and Vector Quantiser (VQ) entries are in dB, which matches the ears logarithmic amplitude response. +\item The amplitudes and Vector Quantiser (VQ) entries are in dB, which matches the ear's logarithmic amplitude response. \item The mode is capable of communications quality speech and is in common use with FreeDV, but is close to the lower limits of intelligibility, and doesn't do well in some languages (problems have been reported with German and Japanese). \item The VQ was trained on just 120 seconds of data - way too short. \item The parameter set (pitch, voicing, log spectral magnitudes) is very similar to that used for the latest neural vocoders. -\item The Rate K algorithms were recently revisited, several improvements were proposed and prototyped \cite{rowe2023ratek}. +\item The Rate K algorithms were recently revisited, and several improvements were proposed and prototyped \cite{rowe2023ratek}. \end{enumerate} \section{Summary of Codec 2 Modes} @@ -945,14 +945,14 @@ Mode & Frm (ms) & Bits & $A_m$ & $E$ & $\omega_0$ & $v$ & Use Cases \\ \caption{Codec 2 Modes} \end{table} -The 3200 mode quantises the LSP differences $\omega_{i+1}-\omega_i$, which provides low distortion at the expense of robustness to bit errors, as an error in a low order LSP difference will propagate through the frame. The 2400 and 1200 bit/s modes use a joint delta $\omega_0$ and energy VQ, which is efficient but also also suffers from error propagation so is not suitable for high BER use cases. +The 3200 mode quantises the LSP differences $\omega_{i+1}-\omega_i$, which provides low distortion at the expense of robustness to bit errors, as an error in a low order LSP difference will propagate through the frame. The 2400 and 1200 bit/s modes use a joint delta $\omega_0$ and energy VQ, which is efficient but also suffers from error propagation so is not suitable for high BER use cases. There is an unfortunate overlap in the naming conventions of Codec 2 and FreeDV. The Codec 2 700C mode is used in the FreeDV 700C, 700D, and 700E modes. \section{Summary of Codec 2 Source Files} \label{sect:source_files} -Codec 2 is part of the \emph{codec2} repository, which also includes various modems and FreeDV API code. This sections lists the files specific to the speech codec. The \emph{cmake} system builds the \emph{libcodec2} library, which is called by user applications via the Codec 2 API in \emph{codec2.h}. See the repository \emph{README} for information on building, demo applications, and an introduction to other features of the \emph{codec2} repository. +Codec 2 is part of the \emph{codec2} repository, which also includes various modems and FreeDV API code. This section lists the files specific to the speech codec. The \emph{cmake} system builds the \emph{libcodec2} library, which is called by user applications via the Codec 2 API in \emph{codec2.h}. See the repository \emph{README} for information on building, demo applications, and an introduction to other features of the \emph{codec2} repository. \begin{table}[H] \label{tab:codec2_file} From e67ce322921ece56f4c108ceec6397e19325d928 Mon Sep 17 00:00:00 2001 From: Mooneer Salem Date: Tue, 12 Dec 2023 20:52:19 -0800 Subject: [PATCH 02/23] Reenable documentation ctest. --- .github/workflows/cmake.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/cmake.yml b/.github/workflows/cmake.yml index 7e76b65..f843282 100644 --- a/.github/workflows/cmake.yml +++ b/.github/workflows/cmake.yml @@ -50,7 +50,7 @@ jobs: - name: Run ctests working-directory: ${{github.workspace}}/build_linux shell: bash - run: ctest --output-on-failure -E test_codec2_doc + run: ctest --output-on-failure - name: Test library installation working-directory: ${{github.workspace}}/build_linux From d9f3ca774bf7922bc8adb29983570d5a81a47bd3 Mon Sep 17 00:00:00 2001 From: Mooneer Salem Date: Tue, 12 Dec 2023 21:01:35 -0800 Subject: [PATCH 03/23] Install missing packages. --- .github/workflows/cmake.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/cmake.yml b/.github/workflows/cmake.yml index f843282..c84a024 100644 --- a/.github/workflows/cmake.yml +++ b/.github/workflows/cmake.yml @@ -21,7 +21,7 @@ jobs: shell: bash run: | sudo apt-get update - sudo apt-get install octave octave-common octave-signal liboctave-dev gnuplot sox p7zip-full python3-numpy valgrind clang-format + sudo apt-get install octave octave-common octave-signal liboctave-dev gnuplot sox p7zip-full python3-numpy valgrind clang-format texlive-latex-base texlive-fonts-recommended texlive-fonts-extra texlive-latex-extra - name: Create Build Directory shell: bash From 7f41d0aaa84cb8897f8eea6c0f5fe4d4e05c787f Mon Sep 17 00:00:00 2001 From: Mooneer Salem Date: Tue, 12 Dec 2023 21:11:34 -0800 Subject: [PATCH 04/23] Add missed packages. --- .github/workflows/cmake.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/cmake.yml b/.github/workflows/cmake.yml index c84a024..df02ee2 100644 --- a/.github/workflows/cmake.yml +++ b/.github/workflows/cmake.yml @@ -21,7 +21,7 @@ jobs: shell: bash run: | sudo apt-get update - sudo apt-get install octave octave-common octave-signal liboctave-dev gnuplot sox p7zip-full python3-numpy valgrind clang-format texlive-latex-base texlive-fonts-recommended texlive-fonts-extra texlive-latex-extra + sudo apt-get install octave octave-common octave-signal liboctave-dev gnuplot sox p7zip-full python3-numpy valgrind clang-format texlive-latex-base texlive-fonts-recommended texlive-fonts-extra texlive-latex-extra texlive-science texmaker texlive-bibtex-extra - name: Create Build Directory shell: bash From 8c3fda08d0cd4956bd71067dac4c3f690308a707 Mon Sep 17 00:00:00 2001 From: Mooneer Salem Date: Tue, 12 Dec 2023 21:22:32 -0800 Subject: [PATCH 05/23] Experiment: use array package. --- doc/codec2.tex | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/codec2.tex b/doc/codec2.tex index 27181a2..7e6640f 100644 --- a/doc/codec2.tex +++ b/doc/codec2.tex @@ -8,6 +8,7 @@ \usepackage{xstring} \usepackage{catchfile} \usepackage{siunitx} +\usepackage{array} \CatchFileDef{\headfull}{../.git/HEAD}{} \StrGobbleRight{\headfull}{1}[\head] From f6d40396e506ce57e04db62c4332520e4cfcbdc6 Mon Sep 17 00:00:00 2001 From: Mooneer Salem Date: Tue, 12 Dec 2023 21:30:18 -0800 Subject: [PATCH 06/23] Revert "Experiment: use array package." This reverts commit 8c3fda08d0cd4956bd71067dac4c3f690308a707. --- doc/codec2.tex | 1 - 1 file changed, 1 deletion(-) diff --git a/doc/codec2.tex b/doc/codec2.tex index 7e6640f..27181a2 100644 --- a/doc/codec2.tex +++ b/doc/codec2.tex @@ -8,7 +8,6 @@ \usepackage{xstring} \usepackage{catchfile} \usepackage{siunitx} -\usepackage{array} \CatchFileDef{\headfull}{../.git/HEAD}{} \StrGobbleRight{\headfull}{1}[\head] From c41a3a23aef6364e80a3fcfd49f18fb4af65932d Mon Sep 17 00:00:00 2001 From: Mooneer Salem Date: Tue, 12 Dec 2023 21:32:45 -0800 Subject: [PATCH 07/23] Try Ubuntu 20.04 and see if those tex packages work better. --- .github/workflows/cmake.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/cmake.yml b/.github/workflows/cmake.yml index df02ee2..731bc9f 100644 --- a/.github/workflows/cmake.yml +++ b/.github/workflows/cmake.yml @@ -12,7 +12,7 @@ jobs: # well on Windows or Mac. You can convert this to a matrix build if you need # cross-platform coverage. # See: https://docs.github.com/en/free-pro-team@latest/actions/learn-github-actions/managing-complex-workflows#using-a-build-matrix - runs-on: ubuntu-latest + runs-on: ubuntu-20.04 steps: - uses: actions/checkout@v2 From 984b50ffd9b07b41b8fc6c98f9c2eb58b3325d2a Mon Sep 17 00:00:00 2001 From: Mooneer Salem Date: Tue, 12 Dec 2023 22:17:57 -0800 Subject: [PATCH 08/23] Revert "Try Ubuntu 20.04 and see if those tex packages work better." This reverts commit c41a3a23aef6364e80a3fcfd49f18fb4af65932d. --- .github/workflows/cmake.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/cmake.yml b/.github/workflows/cmake.yml index 731bc9f..df02ee2 100644 --- a/.github/workflows/cmake.yml +++ b/.github/workflows/cmake.yml @@ -12,7 +12,7 @@ jobs: # well on Windows or Mac. You can convert this to a matrix build if you need # cross-platform coverage. # See: https://docs.github.com/en/free-pro-team@latest/actions/learn-github-actions/managing-complex-workflows#using-a-build-matrix - runs-on: ubuntu-20.04 + runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 From a560830c4655ccfd9b9f182e229680f141027531 Mon Sep 17 00:00:00 2001 From: Mooneer Salem Date: Tue, 12 Dec 2023 22:19:10 -0800 Subject: [PATCH 09/23] Add additional debugging. --- doc/Makefile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/doc/Makefile b/doc/Makefile index 659d4f6..3907251 100644 --- a/doc/Makefile +++ b/doc/Makefile @@ -20,10 +20,10 @@ PATH := $(PATH):$(CODEC2_BINARY)/src PLOT_FILES := hts2a_37_sn.tex hts2a_37_sw.tex hts2a_37_lpc_lsp.tex hts2a_37_lpc_pf.tex $(DOCNAME).pdf: $(PLOT_FILES) $(DOCNAME).tex $(DOCNAME)_refs.bib - pdflatex -jobname=$(JOBNAME) $(DOCNAME).tex + pdflatex -file-line-error -jobname=$(JOBNAME) $(DOCNAME).tex bibtex $(JOBNAME).aux - pdflatex -jobname=$(JOBNAME) $(DOCNAME).tex - pdflatex -jobname=$(JOBNAME) $(DOCNAME).tex + pdflatex -file-line-error -jobname=$(JOBNAME) $(DOCNAME).tex + pdflatex -file-line-error -jobname=$(JOBNAME) $(DOCNAME).tex $(PLOT_FILES): echo $(PATH) From d7212c5ec442ba798f2a98beeb101fd18a74b2cd Mon Sep 17 00:00:00 2001 From: Mooneer Salem Date: Tue, 12 Dec 2023 22:27:26 -0800 Subject: [PATCH 10/23] Try disabling maketitle just to see what happens. --- doc/codec2.tex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/codec2.tex b/doc/codec2.tex index 27181a2..c3538ea 100644 --- a/doc/codec2.tex +++ b/doc/codec2.tex @@ -53,7 +53,7 @@ pinstyle/.style = {pin edge={to-,thin,black}} \draw (#1,#2-0.25) -- (#1,#2+0.25); } -\maketitle +%\maketitle \section{Introduction} From ecbeb0aa47f8a1e29bb462cea9d90e5eb2cb6978 Mon Sep 17 00:00:00 2001 From: Mooneer Salem Date: Tue, 12 Dec 2023 22:55:58 -0800 Subject: [PATCH 11/23] Try alternate approach for getting Git branch/commit info. --- doc/Makefile | 6 +++--- doc/codec2.tex | 16 ++++++++-------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/doc/Makefile b/doc/Makefile index 3907251..5d05ea4 100644 --- a/doc/Makefile +++ b/doc/Makefile @@ -20,10 +20,10 @@ PATH := $(PATH):$(CODEC2_BINARY)/src PLOT_FILES := hts2a_37_sn.tex hts2a_37_sw.tex hts2a_37_lpc_lsp.tex hts2a_37_lpc_pf.tex $(DOCNAME).pdf: $(PLOT_FILES) $(DOCNAME).tex $(DOCNAME)_refs.bib - pdflatex -file-line-error -jobname=$(JOBNAME) $(DOCNAME).tex + pdflatex -shell-escape -file-line-error -jobname=$(JOBNAME) $(DOCNAME).tex bibtex $(JOBNAME).aux - pdflatex -file-line-error -jobname=$(JOBNAME) $(DOCNAME).tex - pdflatex -file-line-error -jobname=$(JOBNAME) $(DOCNAME).tex + pdflatex -shell-escape -file-line-error -jobname=$(JOBNAME) $(DOCNAME).tex + pdflatex -shell-escape -file-line-error -jobname=$(JOBNAME) $(DOCNAME).tex $(PLOT_FILES): echo $(PATH) diff --git a/doc/codec2.tex b/doc/codec2.tex index c3538ea..89218fa 100644 --- a/doc/codec2.tex +++ b/doc/codec2.tex @@ -9,14 +9,14 @@ \usepackage{catchfile} \usepackage{siunitx} -\CatchFileDef{\headfull}{../.git/HEAD}{} -\StrGobbleRight{\headfull}{1}[\head] -\StrBehind[2]{\head}{/}[\branch] -\IfFileExists{../.git/refs/heads/\branch}{% - \CatchFileDef{\commit}{../.git/refs/heads/\branch}{}}{% - \newcommand{\commit}{\dots~(in \emph{packed-refs})}} \newcommand{\gitrevision}{% - \StrLeft{\commit}{7}% + \immediate\write18{git log -n1 --oneline | awk '{print $1;}' > gitrevision.txt} + \input{gitrevision.txt} +} + +\newcommand{\branch}{% + \immediate\write18{git branch --show-current > gitbranch.txt} + \input{gitbranch.txt} } \title{Codec 2} @@ -53,7 +53,7 @@ pinstyle/.style = {pin edge={to-,thin,black}} \draw (#1,#2-0.25) -- (#1,#2+0.25); } -%\maketitle +\maketitle \section{Introduction} From d104a5019cbbb7e46f532ccc760f588bc5ef2ae7 Mon Sep 17 00:00:00 2001 From: Jim Tittsler Date: Thu, 14 Dec 2023 11:55:49 +0900 Subject: [PATCH 12/23] Revert s->z spelling changes --- doc/codec2.tex | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/doc/codec2.tex b/doc/codec2.tex index 4bbffee..310db85 100644 --- a/doc/codec2.tex +++ b/doc/codec2.tex @@ -200,7 +200,7 @@ Often the errors interact, for example the fine pitch error shown above will mea \begin{center} \begin{tikzpicture}[auto, node distance=2cm,>=triangle 45,x=1.0cm,y=1.0cm,align=center,text width=2cm] -\node [input] (input) {}; +\node [input] (rinput) {}; \node [block, right of=rinput,node distance=2cm] (dequantise) {Dequantise Interpolate}; \node [block, right of=dequantise,node distance=3cm] (recover) {Recover Amplitudes}; \node [block, right of=recover,node distance=3cm] (synthesise) {Synthesise Speech}; @@ -230,7 +230,7 @@ Table \ref{tab:bit_allocation} presents the bit allocation for two popular Codec At very low bit rates such as 700 bits/s, we use Vector Quantisation (VQ) to represent the spectral amplitudes. We construct a table such that each row of the table has a set of spectral amplitude samples. In Codec 2 700C the table has 512 rows. During the quantisation process, we choose the table row that best matches the spectral amplitudes for this frame, then send the \emph{index} of the table row. The decoder has a similar table, so can use the index to look up the spectral amplitude values. If the table is 512 rows, we can use a 9 bit number to quantise the spectral amplitudes. In Codec 2 700C, we use two tables of 512 entries each (18 bits total), the second one helps fine tune the quantisation from the first table. -Vector Quantisation can only represent what is present in the tables, so if it sees anything unusual (for example, a different microphone frequency response or background noise), the quantization can become very rough and speech quality poor. We train the tables at design time using a database of speech samples and a training algorithm - an early form of machine learning. +Vector Quantisation can only represent what is present in the tables, so if it sees anything unusual (for example, a different microphone frequency response or background noise), the quantisation can become very rough and speech quality poor. We train the tables at design time using a database of speech samples and a training algorithm - an early form of machine learning. Codec 2 3200 uses the method of fitting a filter to the spectral amplitudes, this approach tends to be more forgiving of small variations in the input speech spectrum, but is not as efficient in terms of bit rate. @@ -345,7 +345,7 @@ r &= \frac{\omega_0 N_{dft}}{2 \pi} \end{equation} The DFT indexes $a_m, b_m$ select the band of $S_w(k)$ containing the $m$-th harmonic; $r$ maps the harmonic number $m$ to the nearest DFT index, and $\lfloor x \rceil$ is the rounding operator. This method of estimating $A_m$ is relatively insensitive to small errors in $F0$ estimation and works equally well for voiced and unvoiced speech. Figure $\ref{fig:hts2a_time}$ plots $S_w$ (blue) and $\{A_m\}$ (red) for a sample frame of female speech. -The phase is sampled at the centre of the band. For all practical Codec 2 modes, the phase is not transmitted to the decoder, so it does not need to be computed. However, speech synthesized using the phase is useful as a control during development and is available using the \emph{c2sim} utility. +The phase is sampled at the centre of the band. For all practical Codec 2 modes, the phase is not transmitted to the decoder, so it does not need to be computed. However, speech synthesised using the phase is useful as a control during development and is available using the \emph{c2sim} utility. \subsection{Sinusoidal Synthesis} From 217b4307e8590b16a0c95505b951e5bd1b01aa46 Mon Sep 17 00:00:00 2001 From: Mooneer Salem Date: Mon, 18 Dec 2023 12:56:04 -0800 Subject: [PATCH 13/23] Update codec2.pdf Regenerate codec2.pdf based on PR changes. --- doc/codec2.pdf | Bin 322353 -> 322873 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/doc/codec2.pdf b/doc/codec2.pdf index ac2e63c694e646241796fa1ad8d06a19eb675946..5aa90b69d20ab94a7c221b85f8b97b620f87b61a 100644 GIT binary patch delta 77234 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

39b@IY_PX-N#PfjFjDfoV4am%yhCHv};4 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 delta 76711 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

M&()jyVM3MvA%7J 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%0D(skPCo^ot>Re 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 From 32fa99472aa8f26ba6f76cdbcea00d4730fb2b22 Mon Sep 17 00:00:00 2001 From: drowe67 <45574645+drowe67@users.noreply.github.com> Date: Fri, 16 Feb 2024 16:13:43 +1030 Subject: [PATCH 14/23] Update README.md Making recommendations for Windows clearer. --- README.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 726152c..4ae53f3 100644 --- a/README.md +++ b/README.md @@ -36,7 +36,9 @@ Some key guidelines about the code in the `codec2` repo: ## Ports to non C99 Compilers -We have standardized on C99 and develop and test using gcc on a Linux platform. We encourage people who want to use non-standard compilers like MSVC and certain embedded compilers to maintain their own Codec 2 forks. Our focus needs to be on what’s unique about our project – the speech codec and modem waveforms – rather than consuming time and resources on non-core activities that others can do equally well. If you decide to fork Codec 2 to a non C99 compiler - please ensure you port the ctests and that they all pass. If the tests have not been ported or do not pass - it's not Codec 2. +For Windows applications (built with MSVC or any compiler) we recommend linking with our [cross-compiled](#building-for-windows) Codec 2 DLLs. This lets you enjoy the benefits of our carefully developed, tested and maintained codebase without having to develop and maintain your own fork. + +We have standardized on C99 and develop and test using gcc on a Linux platform. Our focus needs to be on what’s unique about our project – the speech codec and modem waveforms, and we lack the resources to support multiple compilers. If you want to build Codec 2 using a non-standard compiler like MSVC and certain embedded compilers you will need to maintain your own Codec 2 fork (a very large commitment). If you decide to fork Codec 2 to a non C99 compiler - please ensure you port the ctests and that they all pass. If the tests have not been ported or do not pass - it's not Codec 2. ## Quickstart @@ -203,7 +205,7 @@ wav - speech files in wave file format make ``` -## Bulding for Windows +## Building for Windows We develop and test on Linux to the [C99 standard](#ports-to-non-c99-compilers). We recommend using MinGW to cross compile for Windows. From 10df28afccddb6b17007d78ef494467b2c0f7a22 Mon Sep 17 00:00:00 2001 From: drowe67 <45574645+drowe67@users.noreply.github.com> Date: Fri, 15 Mar 2024 06:43:05 +1030 Subject: [PATCH 15/23] Update README.md Feature Request form link --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 4ae53f3..7af0864 100644 --- a/README.md +++ b/README.md @@ -25,7 +25,7 @@ The code supporting these modes won't be going away any time soon (and we will c We have a process for considering Feature Requests and Pull Requests that we will guide you through. -Feature Requests can be submitted via GitHub Issues. +If you have a Feature Request, please answer the questions in the [Feature Request Form](https://freedv.org/wp-content/uploads/sites/8/2024/03/FreeDV-027-Feature-Request-Form-V1.1.pdf), and submit your answers as a GitHub Issue. Before writing any code or submitting a PR - **please discuss** the PR with developers by raising a GitHub Issue. We have many years of experience and a carefully considered plan for Codec 2 development, and can guide you on work that will most benefit this project. From b6faec2ac3a527cad63dd0f19cc1a3347d199dc3 Mon Sep 17 00:00:00 2001 From: drowe67 Date: Wed, 27 Mar 2024 19:07:07 +1030 Subject: [PATCH 16/23] first pass at datac14, 5 byte, < 1s signalling mode --- doc/modem_codec_frame_design.ods | Bin 29872 -> 44305 bytes octave/ofdm_lib.m | 2 +- octave/ofdm_mode.m | 22 +++++++++++++++++++++- octave/ofdm_rx.m | 4 +++- 4 files changed, 25 insertions(+), 3 deletions(-) diff --git a/doc/modem_codec_frame_design.ods b/doc/modem_codec_frame_design.ods index e6cf1c746f10c636d1db7169125bbeb68d958110..ab51e225c0bf83afa58f212e33f4c00eeabf5b6e 100644 GIT binary patch literal 44305 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 smVzwDky0y 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 E05Y|8!~g&Q delta 28500 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 Date: Thu, 28 Mar 2024 06:52:42 +1030 Subject: [PATCH 17/23] tweaks to reduce duration to 0.69s including pre/postamble --- octave/ofdm_mode.m | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/octave/ofdm_mode.m b/octave/ofdm_mode.m index da08bcd..a56edac 100644 --- a/octave/ofdm_mode.m +++ b/octave/ofdm_mode.m @@ -135,9 +135,9 @@ function config = ofdm_init_mode(mode="700D") config.amp_scale = 2.5*300E3; config.clip_gain1 = 1.2; config.clip_gain2 = 1.0; config.txbpf_width_Hz = 400; elseif strcmp(mode,"datac14") - Ns=5; config.Np=6; Tcp = 0.006; Ts = 0.020; Nc = 3; config.data_mode = "streaming"; + Ns=5; config.Np=4; Tcp = 0.005; Ts = 0.018; Nc = 4; config.data_mode = "streaming"; config.edge_pilots = 0; - config.Ntxtbits = 0; config.Nuwbits = 48; config.bad_uw_errors = 18; + config.Ntxtbits = 0; config.Nuwbits = 32; config.bad_uw_errors = 12; config.ftwindow_width = 80; config.timing_mx_thresh = 0.45; config.tx_uw = zeros(1,config.Nuwbits); config.tx_uw(1:24) = [1 1 0 0 1 0 1 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0]; From 3c761467659fb6d4776fc59075d7d32e99b9b156 Mon Sep 17 00:00:00 2001 From: drowe67 Date: Thu, 28 Mar 2024 07:39:00 +1030 Subject: [PATCH 18/23] work out packet duration including pre/postamble --- doc/modem_codec_frame_design.ods | Bin 44305 -> 44489 bytes octave/ofdm_helper.m | 3 ++- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/doc/modem_codec_frame_design.ods b/doc/modem_codec_frame_design.ods index ab51e225c0bf83afa58f212e33f4c00eeabf5b6e..040ba0160adc96327f3487de7676e81b74d8b332 100644 GIT binary patch delta 3136 zcmZWr2|Scr8=o0svKK;zi4%+?=+UOug!=qS+b2~vNL4HSd*pfTXUn3 zElY?Y*|T2>-%M`bcl&+k`Mu|y-~UC(zOT&z!84InhYaoCKiQC+$wJp5Xs=oWaho2s;1+4~TV~h{p1L0hH- zDyH)3NOErXcnQ0M0^ZT41^aYTe_Eph02FQm04EFnl}ire4IpI=lS~j)PyCPsi`rhO z8r!G>a{gYC6!&9O22ixR{YUSWB^J$zvd(AHDE%oZswUfX;oMA%x~w_oI&IPo<%!`D zNa%T%X)0`Kxvt;07M?%yhEPINbGxDC>|hTg6p++^Dr;LEzopWrqv zQ=MeYc^;$6^Bma49pZ-ATAp&0?vcEn>xrxJr!9u1HCn{6i0|n24IitU2FOO4=Gus6 z9dy-B!rYSjqK)VWo>HH$qdj#|`j)`0INsa*fdZ!I`Y~PC?YvS@B*hp@kt!{-CtwZH z>_SoYEZWC|m@T>I@>7*v?7pjSVl`ghUkG5gY2VXOS9&qW%G^?}etff{W~mO5C-P!N zJakq3!6_Q`8jo1wYxkM0ENHcaEs$}vfjGWhH@GLQ)Rn&%E@x$Nz?#xwSDWK{t(VZhq{#ZyU6iEx4hA}*ZR4e-UimN=$KuXGmg)4>`O?vxY2Of-)286)(T2Oe zeD>whD`aUFpODH(y1gG!AmGR$C25nkVy~{AXq9*v@fY&@Slv0H=mQ)Xgef{H`;%pN z+wqw3)4&+Vs1537nAJ}?oTlHcub{eLS}4RI8}rE%o|!FVBTBe!BAAXDP599b(vUjs zpLP1ehDBI6`$j~1(+3t#utTMWZDpz}(<5FCmrA(G@x5IL-F5?J{?cT7=MK+J#jsDr zjM3`gO`va{Ig#n|hxZGmqCLehjYjcXf>ANkhQW-e#J_F?%j#ZpLOeK)lZi_7!pwjE z&fc_R*6QUkuUDyZjdLPo#X-PbH@(p_D-S6bmMLWGlMzqya8Q<&YZcCG%dSenlrXTc2COEy(HKU5_qS_3)%a zPG}K|pZhS~1)J$Hgk{c4RMWeox|Y&%)GBzvHF14R(#9+B>vo`CPx(e6Q{w4tNc-?s z7JEx!VH@ig$lSxo<<_e~&~E#n4C`hkT58O7ou$zoa3N4evJaQJMr}@41DuTjPB5o|dfK=I#N!Xz>91%m&smONtM5Dq%`qYB8PRiR5?}I<|^BMc! z(N?%@$&gH+3?z>;uMlyNx^B>W-@ zd!{=p>w$}h;(x_!58!=6AHtIZgEieX_g;LY;uR1Jx8gNB+7(M?=o5kS-U;-FSD*QO z*tZ|;y>DUw=eg_LLc}U9Go-+atzV-SWin!Sam$!;5{7<$@W*m`T=UV_Yeei7U^!n6 z?R&L=Jc(5k)Z0TOB%!=%1IG$cFieTxY&f=ji5Kz_3#|DYm0?je9Gm7_4C_%SDQo>^ zcs`+AcF?M6KejQa;CscOwQ++=#zsjYH$FK#>{dI&W<*`KuJ zx!2bCd1psRETTn_qvw@hzR4TU*o+rQDXv;$hp~8Y5%FBNjK8z3{VBpS8@F4UI|kDl{GCgWN*0!Gw{O9`>~eFZ*jop4cF)&CCALufhGp zec!2&12rN=;zqB7tBVo@hWk;OJtLJyi%bGF!ykwLSfcS5}1 z5!)O!)z@G%-LB3Xo%e5itB8VnJa3xXQEdtE6z;2T=Ybi^%|_3t)rur0dlFtvOuOJ! z>a%8{b0m zy4~<_3Ov8!IU7~E<}YKHA|FQJ+7`)wH~@w_7&npO+={7I>*)db(Wk|+U2nAMrG=mZx{m4pH2rb0fAZ0Whyq0U8fh2|LskF5mm z-bCx(#0qc3P%?cDgA>lZJF!BK3-O-KK}hAj@m7YA3WCE@u|Jfr*v(>KVwO}ZYf(iy z5`DYr+ODKdP)#V*Y~k16ODy346)oYdjC>^EWidQOv)t`zq{p2BD7=OcQ`jAZ0p3Tl zl!~W_U+ZJtE$Bob-yMwph{@CL>(U0skK_4kB^6>6(x5DTOpX0JmO{@mOb{<_GQW$I z`idJM7AtEEivc6z5s{oFsv3(AOnAb;FR|E9mlV1QlXkujHifx(<_XYk;C(iO#yf?F z;RBKJa8OQt`F!~y3b3bBC+w%=Jtpqer*kI0y#JQr@LBO+ARu;eo~a;dhQB$rmbOEqB- zqvcmI87biezB{o8`#E+I&$p*EZ(UuQ=GT#rlrU<}LowPRG>Dw-hGq^y4lE6)?7FW# zhN)l%unz7O7WEHP!FOvH>aP^}KjAss3J(b?QYWPI=@{L_Y??gAe|u&Nn&j8H4Pr2Q zjjmrXYvvvZTeNqjwFW3k&(X`NrJfmmaIA?o`f?c=bU8OGqk4+s{ zX=`ur8zNi=R-<$`dZD|s`tEk`C7p#_LKRIyPrVv z%NhoMOdK;)%K71v-z`^Z0N^VhHTm2DL2Q6uOcnhMCrzPkPyz(KjAJ9yRXT>>^hqTU zU<}#-#ENb!Ironxu$>I>{J-7bWS9f}u;eG>B}W8GpwE=BqNngIzi2HbnllAV+GqIP zAA*MfbAD=Cm|!OvoKTJsQvkVvC>^;8o(%u=qhyDl%()K-0f~c>9$ZAT;At3sIa1gv z+KnJVNjsY$$7oO-V)|cZgPtY8pcLfaKOw_!;XBd7rQ8=NHp}mY@!4ho0OjHQ%|??8 pZO3&UjVfiJyya;r1jvmpDHZq``QM+N{x`1z^lB+DjS8Lu{s$V(nd$%l delta 3028 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 diff --git a/octave/ofdm_helper.m b/octave/ofdm_helper.m index b34ec23..38c0248 100644 --- a/octave/ofdm_helper.m +++ b/octave/ofdm_helper.m @@ -44,7 +44,8 @@ function print_config(states) printf("Nc=%d Ts=%4.3f Tcp=%4.3f Ns: %d Np: %d\n", Nc, 1/Rs, Tcp, Ns, Np); printf("Nsymperframe: %d Nbitsperpacket: %d Nsamperframe: %d Ntxtbits: %d Nuwbits: %d Nuwframes: %d\n", Ns*Nc, Nbitsperpacket, Nsamperframe, Ntxtbits, Nuwbits, Nuwframes); - printf("uncoded bits/s: %4.1f\n", Nbitsperpacket*Fs/(Np*Nsamperframe)); + printf("uncoded bits/s: %4.1f Duration (incl post/preamble): %4.2f s\n", + Nbitsperpacket*Fs/(Np*Nsamperframe), (Np+2)*Ns*(Tcp+1/Rs)); end %----------------------------------------------------------------------- From 2ee2989c9cc54dd30b94b1a2cfda0db5975d3cc8 Mon Sep 17 00:00:00 2001 From: drowe67 Date: Fri, 29 Mar 2024 07:18:31 +1030 Subject: [PATCH 19/23] ofdm_mod/ofdm_demod working with datac14 --- CMakeLists.txt | 17 ++++++++++++++++- src/gp_interleaver.c | 1 + src/interldpc.c | 1 + src/ofdm.c | 6 ++++-- src/ofdm_mode.c | 25 +++++++++++++++++++++++++ 5 files changed, 47 insertions(+), 3 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index ff1b295..f6b2201 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -662,6 +662,13 @@ endif() cd ${CMAKE_CURRENT_BINARY_DIR}/src; cat test.raw | ./ofdm_demod --mode datac13 --out /dev/null --testframes --ldpc --verbose 2 --packetsperburst 1") + # DATAC14 Octave Tx, C Rx, burst mode + add_test(NAME test_OFDM_modem_datac14_octave + COMMAND sh -c "cd ${CMAKE_CURRENT_SOURCE_DIR}/octave; + DISPLAY=\"\" octave-cli -qf --eval 'ofdm_ldpc_tx(\"${CMAKE_CURRENT_BINARY_DIR}/src/test.raw\",\"datac14\",1,3,\"awgn\",\"bursts\",5)'; + cd ${CMAKE_CURRENT_BINARY_DIR}/src; + cat test.raw | ./ofdm_demod --mode datac14 --out /dev/null --testframes --ldpc --verbose 2 --packetsperburst 1") + # DATAC4 C Tx, C Rx, burst mode add_test(NAME test_OFDM_modem_datac4_ldpc_burst COMMAND sh -c "cd ${CMAKE_CURRENT_BINARY_DIR}/src; @@ -676,7 +683,14 @@ endif() ./ch - - --No -17 | ./ofdm_demod --mode datac13 --out /dev/null --testframes --ldpc --verbose 2 --packetsperburst 1") - # ------------------------------------------------------------------------- + # DATAC14 C Tx, C Rx, burst mode + add_test(NAME test_OFDM_modem_datac14_ldpc_burst + COMMAND sh -c "cd ${CMAKE_CURRENT_BINARY_DIR}/src; + ./ofdm_mod --mode datac14 --in /dev/zero --testframes 1 --verbose 1 --ldpc --bursts 10 | + ./ch - - --No -17 | + ./ofdm_demod --mode datac14 --out /dev/null --testframes --ldpc --verbose 2 --packetsperburst 1") + + # ------------------------------------------------------------------------- # LDPC # ------------------------------------------------------------------------- @@ -1392,6 +1406,7 @@ endif(NOT APPLE) test_OFDM_modem_datac3_octave test_OFDM_modem_datac4_octave test_OFDM_modem_datac13_octave + test_OFDM_modem_datac14_octave test_fsk_lib_4fsk_ldpc test_OFDM_modem_datac0_compression PROPERTIES diff --git a/src/gp_interleaver.c b/src/gp_interleaver.c index 61678f8..6710b0c 100644 --- a/src/gp_interleaver.c +++ b/src/gp_interleaver.c @@ -44,6 +44,7 @@ */ static const int b_table[] = { + 48, 31, /* datac14: HRA_56_56, 40 data bits used */ 56, 37, /* 700E: HRA_56_56 */ 106, 67, /* 2020B: (112,56) partial protection */ 112, 71, /* 700D: HRA_112_112 */ diff --git a/src/interldpc.c b/src/interldpc.c index 24f4b2a..8cec647 100644 --- a/src/interldpc.c +++ b/src/interldpc.c @@ -78,6 +78,7 @@ void ldpc_mode_specific_setup(struct OFDM *ofdm, struct LDPC *ldpc) { } if (!strcmp(ofdm->mode, "datac4")) set_data_bits_per_frame(ldpc, 448); if (!strcmp(ofdm->mode, "datac13")) set_data_bits_per_frame(ldpc, 128); + if (!strcmp(ofdm->mode, "datac14")) set_data_bits_per_frame(ldpc, 40); } /* LDPC encode frame - generate parity bits and a codeword, applying the diff --git a/src/ofdm.c b/src/ofdm.c index 28d6dba..ba22f3f 100644 --- a/src/ofdm.c +++ b/src/ofdm.c @@ -559,7 +559,8 @@ static void allocate_tx_bpf(struct OFDM *ofdm) { quisk_filt_cfInit(ofdm->tx_bpf, filtP400S600, sizeof(filtP400S600) / sizeof(float)); quisk_cfTune(ofdm->tx_bpf, ofdm->tx_centre / ofdm->fs); - } else if (!strcmp(ofdm->mode, "datac4") || !strcmp(ofdm->mode, "datac13")) { + } else if (!strcmp(ofdm->mode, "datac4") || !strcmp(ofdm->mode, "datac13") || + !strcmp(ofdm->mode, "datac14")) { quisk_filt_cfInit(ofdm->tx_bpf, filtP200S400, sizeof(filtP200S400) / sizeof(float)); // centre the filter on the mean carrier freq, allows a narrower filter to @@ -590,7 +591,8 @@ static void allocate_rx_bpf(struct OFDM *ofdm) { /* Receive bandpass filter; complex coefficients, center frequency */ - if (!strcmp(ofdm->mode, "datac4") || !strcmp(ofdm->mode, "datac13")) { + if (!strcmp(ofdm->mode, "datac4") || !strcmp(ofdm->mode, "datac13") || + !strcmp(ofdm->mode, "datac14")) { quisk_filt_cfInit(ofdm->rx_bpf, filtP200S400, sizeof(filtP200S400) / sizeof(float)); // centre the filter on the mean carrier freq, allows a narrower filter to diff --git a/src/ofdm_mode.c b/src/ofdm_mode.c index 1aabb1a..f92d288 100644 --- a/src/ofdm_mode.c +++ b/src/ofdm_mode.c @@ -226,6 +226,31 @@ void ofdm_init_mode(char mode[], struct OFDM_CONFIG *config) { config->clip_gain1 = 1.2; config->clip_gain2 = 1.0; config->rx_bpf_en = true; + } else if (strcmp(mode, "datac14") == 0) { + config->ns = 5; + config->np = 4; + config->tcp = 0.005; + config->ts = 0.018; + config->nc = 4; + config->edge_pilots = 0; + config->txtbits = 0; + config->state_machine = "data"; + config->ftwindowwidth = 80; + config->timing_mx_thresh = 0.45; + config->codename = "HRA_56_56"; + config->amp_est_mode = 1; + config->nuwbits = 32; + config->bad_uw_errors = 12; + uint8_t uw[] = {1, 1, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, + 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0}; + assert(sizeof(uw) <= MAX_UW_BITS); + memcpy(config->tx_uw, uw, sizeof(uw)); + memcpy(&config->tx_uw[config->nuwbits - sizeof(uw)], uw, sizeof(uw)); + config->data_mode = "streaming"; + config->amp_scale = 2.5 * 300E3; + config->clip_gain1 = 1.2; + config->clip_gain2 = 1.0; + config->rx_bpf_en = true; } else { assert(0); } From 3b9037c9c7879ccd19db14464da26a335cdeba36 Mon Sep 17 00:00:00 2001 From: drowe67 Date: Fri, 29 Mar 2024 07:40:38 +1030 Subject: [PATCH 20/23] datac14 freedv_api port --- CMakeLists.txt | 13 +++++++++++++ src/freedv_700.c | 1 + src/freedv_api.c | 19 +++++++++++++------ src/freedv_api.h | 4 ++++ src/freedv_data_raw_rx.c | 2 ++ src/freedv_data_raw_tx.c | 2 ++ 6 files changed, 35 insertions(+), 6 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index f6b2201..aa518d8 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1078,6 +1078,12 @@ if (NOT APPLE) ./freedv_data_raw_tx --testframes 10 DATAC13 /dev/zero /dev/null") set_tests_properties(test_memory_leak_FreeDV_DATAC13_tx PROPERTIES PASS_REGULAR_EXPRESSION "ERROR SUMMARY: 0 errors") + add_test(NAME test_memory_leak_FreeDV_DATAC14_tx + COMMAND sh -c "cd ${CMAKE_CURRENT_BINARY_DIR}/src; + valgrind --leak-check=full --show-leak-kinds=all --track-origins=yes \ + ./freedv_data_raw_tx --testframes 10 DATAC14 /dev/zero /dev/null") + set_tests_properties(test_memory_leak_FreeDV_DATAC14_tx PROPERTIES PASS_REGULAR_EXPRESSION "ERROR SUMMARY: 0 errors") + add_test(NAME test_memory_leak_FreeDV_700E_tx COMMAND sh -c "cd ${CMAKE_CURRENT_BINARY_DIR}/src; valgrind --leak-check=full --show-leak-kinds=all --track-origins=yes \ @@ -1321,6 +1327,13 @@ endif(NOT APPLE) ./freedv_data_raw_rx DATAC13 - binaryOut.bin -v; diff binaryIn.bin binaryOut.bin") + add_test(NAME test_freedv_data_raw_ofdm_datac14_burst_file + COMMAND sh -c "cd ${CMAKE_CURRENT_BINARY_DIR}/src; + head -c $((3*10)) binaryIn.bin; + ./freedv_data_raw_tx DATAC14 binaryIn.bin - --bursts 10 | + ./freedv_data_raw_rx DATAC14 - binaryOut.bin -v; + diff binaryIn.bin binaryOut.bin") + # FSK LDPC default 100 bit/s 2FSK, enough noise for several % raw BER to give # FEC/acquisition a work out, bursts of 1 frame as that stresses acquisition add_test(NAME test_freedv_data_raw_fsk_ldpc_100 diff --git a/src/freedv_700.c b/src/freedv_700.c index 3dc4329..7c8536c 100644 --- a/src/freedv_700.c +++ b/src/freedv_700.c @@ -197,6 +197,7 @@ void freedv_ofdm_data_open(struct freedv *f) { if (f->mode == FREEDV_MODE_DATAC3) strcpy(mode, "datac3"); if (f->mode == FREEDV_MODE_DATAC4) strcpy(mode, "datac4"); if (f->mode == FREEDV_MODE_DATAC13) strcpy(mode, "datac13"); + if (f->mode == FREEDV_MODE_DATAC14) strcpy(mode, "datac14"); ofdm_init_mode(mode, &ofdm_config); f->ofdm = ofdm_create(&ofdm_config); diff --git a/src/freedv_api.c b/src/freedv_api.c index 5172959..3ccf63d 100644 --- a/src/freedv_api.c +++ b/src/freedv_api.c @@ -125,7 +125,8 @@ struct freedv *freedv_open_advanced(int mode, struct freedv_advanced *adv) { FDV_MODE_ACTIVE(FREEDV_MODE_DATAC1, mode) || FDV_MODE_ACTIVE(FREEDV_MODE_DATAC3, mode) || FDV_MODE_ACTIVE(FREEDV_MODE_DATAC4, mode) || - FDV_MODE_ACTIVE(FREEDV_MODE_DATAC13, mode)) == false) + FDV_MODE_ACTIVE(FREEDV_MODE_DATAC13, mode) || + FDV_MODE_ACTIVE(FREEDV_MODE_DATAC14, mode)) == false) return NULL; /* set everything to zero just in case */ @@ -154,6 +155,7 @@ struct freedv *freedv_open_advanced(int mode, struct freedv_advanced *adv) { if (FDV_MODE_ACTIVE(FREEDV_MODE_DATAC3, mode)) freedv_ofdm_data_open(f); if (FDV_MODE_ACTIVE(FREEDV_MODE_DATAC4, mode)) freedv_ofdm_data_open(f); if (FDV_MODE_ACTIVE(FREEDV_MODE_DATAC13, mode)) freedv_ofdm_data_open(f); + if (FDV_MODE_ACTIVE(FREEDV_MODE_DATAC14, mode)) freedv_ofdm_data_open(f); varicode_decode_init(&f->varicode_dec_states, 1); @@ -235,7 +237,8 @@ void freedv_close(struct freedv *freedv) { FDV_MODE_ACTIVE(FREEDV_MODE_DATAC1, freedv->mode) || FDV_MODE_ACTIVE(FREEDV_MODE_DATAC3, freedv->mode) || FDV_MODE_ACTIVE(FREEDV_MODE_DATAC4, freedv->mode) || - FDV_MODE_ACTIVE(FREEDV_MODE_DATAC13, freedv->mode)) { + FDV_MODE_ACTIVE(FREEDV_MODE_DATAC13, freedv->mode) || + FDV_MODE_ACTIVE(FREEDV_MODE_DATAC14, freedv->mode)) { FREE(freedv->rx_syms); FREE(freedv->rx_amps); FREE(freedv->ldpc); @@ -266,7 +269,8 @@ static int is_ofdm_mode(struct freedv *f) { FDV_MODE_ACTIVE(FREEDV_MODE_DATAC1, f->mode) || FDV_MODE_ACTIVE(FREEDV_MODE_DATAC3, f->mode) || FDV_MODE_ACTIVE(FREEDV_MODE_DATAC4, f->mode) || - FDV_MODE_ACTIVE(FREEDV_MODE_DATAC13, f->mode); + FDV_MODE_ACTIVE(FREEDV_MODE_DATAC13, f->mode) || + FDV_MODE_ACTIVE(FREEDV_MODE_DATAC14, f->mode); } static int is_ofdm_data_mode(struct freedv *f) { @@ -274,7 +278,8 @@ static int is_ofdm_data_mode(struct freedv *f) { FDV_MODE_ACTIVE(FREEDV_MODE_DATAC1, f->mode) || FDV_MODE_ACTIVE(FREEDV_MODE_DATAC3, f->mode) || FDV_MODE_ACTIVE(FREEDV_MODE_DATAC4, f->mode) || - FDV_MODE_ACTIVE(FREEDV_MODE_DATAC13, f->mode); + FDV_MODE_ACTIVE(FREEDV_MODE_DATAC13, f->mode) || + FDV_MODE_ACTIVE(FREEDV_MODE_DATAC14, f->mode); } /*---------------------------------------------------------------------------*\ @@ -464,7 +469,8 @@ void freedv_rawdatacomptx(struct freedv *f, COMP mod_out[], FDV_MODE_ACTIVE(FREEDV_MODE_DATAC1, f->mode) || FDV_MODE_ACTIVE(FREEDV_MODE_DATAC3, f->mode) || FDV_MODE_ACTIVE(FREEDV_MODE_DATAC4, f->mode) || - FDV_MODE_ACTIVE(FREEDV_MODE_DATAC13, f->mode)) + FDV_MODE_ACTIVE(FREEDV_MODE_DATAC13, f->mode) || + FDV_MODE_ACTIVE(FREEDV_MODE_DATAC14, f->mode)) freedv_comptx_ofdm(f, mod_out); if (FDV_MODE_ACTIVE(FREEDV_MODE_FSK_LDPC, f->mode)) { @@ -1063,7 +1069,8 @@ int freedv_rawdatacomprx(struct freedv *f, unsigned char *packed_payload_bits, FDV_MODE_ACTIVE(FREEDV_MODE_DATAC1, f->mode) || FDV_MODE_ACTIVE(FREEDV_MODE_DATAC3, f->mode) || FDV_MODE_ACTIVE(FREEDV_MODE_DATAC4, f->mode) || - FDV_MODE_ACTIVE(FREEDV_MODE_DATAC13, f->mode)) + FDV_MODE_ACTIVE(FREEDV_MODE_DATAC13, f->mode) || + FDV_MODE_ACTIVE(FREEDV_MODE_DATAC14, f->mode)) rx_status = freedv_comp_short_rx_ofdm(f, (void *)demod_in, 0, 1.0f); if (FDV_MODE_ACTIVE(FREEDV_MODE_FSK_LDPC, f->mode)) { rx_status = freedv_rx_fsk_ldpc_data(f, demod_in); diff --git a/src/freedv_api.h b/src/freedv_api.h index ce95a55..e4ca468 100644 --- a/src/freedv_api.h +++ b/src/freedv_api.h @@ -61,6 +61,7 @@ extern "C" { #define FREEDV_MODE_DATAC0 14 #define FREEDV_MODE_DATAC4 18 #define FREEDV_MODE_DATAC13 19 +#define FREEDV_MODE_DATAC14 20 // Sample rates used #define FREEDV_FS_8000 8000 @@ -140,6 +141,9 @@ extern "C" { #if !defined(FREEDV_MODE_DATAC13_EN) #define FREEDV_MODE_DATAC13_EN FREEDV_MODE_EN_DEFAULT #endif +#if !defined(FREEDV_MODE_DATAC14_EN) +#define FREEDV_MODE_DATAC14_EN FREEDV_MODE_EN_DEFAULT +#endif #define FDV_MODE_ACTIVE(mode_name, var) \ ((mode_name##_EN) == 0 ? 0 : (var) == mode_name) diff --git a/src/freedv_data_raw_rx.c b/src/freedv_data_raw_rx.c index 1957e10..0353ae5 100644 --- a/src/freedv_data_raw_rx.c +++ b/src/freedv_data_raw_rx.c @@ -214,6 +214,8 @@ int main(int argc, char *argv[]) { mode = FREEDV_MODE_DATAC4; if (!strcmp(argv[dx], "DATAC13") || !strcmp(argv[dx], "datac13")) mode = FREEDV_MODE_DATAC13; + if (!strcmp(argv[dx], "DATAC14") || !strcmp(argv[dx], "datac14")) + mode = FREEDV_MODE_DATAC14; if (mode == -1) { fprintf(stderr, "Error in mode: %s\n", argv[dx]); exit(1); diff --git a/src/freedv_data_raw_tx.c b/src/freedv_data_raw_tx.c index 44d53e9..cb74107 100644 --- a/src/freedv_data_raw_tx.c +++ b/src/freedv_data_raw_tx.c @@ -236,6 +236,8 @@ int main(int argc, char *argv[]) { mode = FREEDV_MODE_DATAC4; if (!strcmp(argv[dx], "DATAC13") || !strcmp(argv[dx], "datac13")) mode = FREEDV_MODE_DATAC13; + if (!strcmp(argv[dx], "DATAC14") || !strcmp(argv[dx], "datac14")) + mode = FREEDV_MODE_DATAC14; if (mode == -1) { fprintf(stderr, "Error: in mode: %s", argv[dx]); exit(1); From 23a7d60bf8269db6d11d106dc70df001e26f9933 Mon Sep 17 00:00:00 2001 From: drowe67 Date: Sat, 30 Mar 2024 08:08:09 +1030 Subject: [PATCH 21/23] put snr_curve.sh system back in from codec2-dev, curves for datac14 --- README.md | 2 +- README_data.md | 1 + octave/snr_curves_plot.m | 267 +++++++++++++++++++++++++ src/ch.c | 2 +- unittest/check_peak.sh | 1 + unittest/raw_data_curves/Makefile | 149 ++++++++++++++ unittest/raw_data_curves/snr_curves.sh | 191 ++++++++++++++++++ 7 files changed, 611 insertions(+), 2 deletions(-) create mode 100644 octave/snr_curves_plot.m create mode 100644 unittest/raw_data_curves/Makefile create mode 100755 unittest/raw_data_curves/snr_curves.sh diff --git a/README.md b/README.md index 726152c..2247afb 100644 --- a/README.md +++ b/README.md @@ -30,7 +30,7 @@ Feature Requests can be submitted via GitHub Issues. Before writing any code or submitting a PR - **please discuss** the PR with developers by raising a GitHub Issue. We have many years of experience and a carefully considered plan for Codec 2 development, and can guide you on work that will most benefit this project. Some key guidelines about the code in the `codec2` repo: -1. Code that is required to build libcodec2, or to test libcodec2 goes in codec2. +1. Only code that is required to build, test, or document libcodec2 goes in codec2. 2. Experimental work, code used for algorithm development, should probably go into some other repo. 3. Only widely used “production” code goes in codec2. If it has an user base of < 2 (e.g. personal projects, early R&D) - it should probably be application code or a fork. diff --git a/README_data.md b/README_data.md index 17481f3..3ceccb4 100644 --- a/README_data.md +++ b/README_data.md @@ -146,6 +146,7 @@ These modes use an OFDM modem with powerful LDPC codes and are designed for send | DATAC3 | 500 | 321 | 126 | (2048,1024) | 3.19 | 74/100 at 0dB | Forward link data (low SNR) | | DATAC4 | 250 | 87 | 56 | (1472,448) | 5.17 | 90/100 at -4dB | Forward link data (low SNR) | | DATAC13 | 200 | 64 | 14 | (384,128) | 2.0 | 90/100 at -4dB | Reverse link ACK packets (low SNR) | +| DATAC14 | 250 | 58 | 3 | (112,56) | 0.69 | 90/100 at -4dB | Reverse link ACK packets (low SNR) | Notes: 1. 16 bits (2 bytes) per frame are reserved for a 16 bit CRC, e.g. for `datac3` we have 128 byte frames, and 128-2=126 bytes/frame of payload data. diff --git a/octave/snr_curves_plot.m b/octave/snr_curves_plot.m new file mode 100644 index 0000000..8baafe0 --- /dev/null +++ b/octave/snr_curves_plot.m @@ -0,0 +1,267 @@ +% snr_curves_plot.m +% +% Companion script for unittest/raw_data_curves + +1; + +function state_vec = set_graphics_state_print() + textfontsize = get(0,"defaulttextfontsize"); + linewidth = get(0,"defaultlinelinewidth"); + markersize = get(0, "defaultlinemarkersize"); + set(0, "defaulttextfontsize", 16); + set(0, "defaultaxesfontsize", 16); + set(0, "defaultlinelinewidth", 1); + state_vec = [textfontsize linewidth markersize]; +endfunction + +function set_graphics_state_screen(state_vec) + textfontsize = state_vec(1); + linewidth = state_vec(2); + markersize = state_vec(3); + set(0, "defaulttextfontsize", textfontsize); + set(0, "defaultaxesfontsize", textfontsize); + set(0, "defaultlinelinewidth", linewidth); + set(0, "defaultlinemarkersize", markersize); +endfunction + +function [snr_ch per] = snr_scatter(source, mode, channel, colour) + suffix = sprintf("_%s_%s_%s",source, mode, channel); + snr = load(sprintf("snr%s.txt",suffix)); + offset = load(sprintf("offset%s.txt",suffix)); + snr -= offset; + snr_x = []; snrest_y = []; + for i=1:length(snr) + fn = sprintf('snrest%s_%d.txt',suffix,i); + if exist(fn,'file') == 2 + snrest=load(fn); + if i == length(snr) + plot(snr(i)*ones(1,length(snrest)), snrest, sprintf('%s;%s %s;',colour,source,mode)); + else + plot(snr(i)*ones(1,length(snrest)), snrest, sprintf('%s',colour)); + end + snr_x = [snr_x snr(i)]; snrest_y = [snrest_y mean(snrest)]; + end + end + plot(snr_x, snrest_y, sprintf('%s', colour)); +endfunction + +function [snr_ch per] = per_snr(mode, colour) + snrch = load(sprintf("snrch_%s.txt",mode)); + snroffset = load(sprintf("snroffset_%s.txt",mode)); + snrch -= snroffset; + per = load(sprintf("per_%s.txt",mode)); + plot(snrch, per, sprintf('%so-;%s;', colour, mode)); +endfunction + +function snrest_snr_screen(source, channel) + clf; hold on; + snr_scatter(source, 'datac0', channel,'b+-') + snr_scatter(source, 'datac1', channel,'g+-') + snr_scatter(source, 'datac3', channel,'r+-') + snr_scatter(source, 'datac4', channel,'c+-') + snr_scatter(source, 'datac13', channel,'m+-') + xlabel('SNR (dB)'); ylabel('SNRest (dB)'); grid('minor'); + axis([-12 12 -12 12]); + a = axis; + plot([a(1) a(2)],[a(1) a(2)],'bk-'); + hold off; grid; + if strcmp(source,'ctx') + title(sprintf('SNR estimate versus SNR (%s) (no compression)', channel)); + else + title(sprintf('SNR estimate versus SNR (%s) (with compression)', channel)); + end + legend('location','northwest'); +endfunction + +function snrest_snr_print(source, channel) + state_vec = set_graphics_state_print(); + snrest_snr_screen(source, channel); + print(sprintf("snrest_snr_%s.png", source), "-dpng", "-S1000,800"); + set_graphics_state_screen(state_vec); +endfunction + +function ber_per_v_snr(source, mode, channel, colour) + suffix = sprintf("_%s_%s_%s.txt",source, mode, channel); + snr = load(sprintf("snr%s",suffix)); + offset = load(sprintf("offset%s",suffix)); + snr -= offset; + ber = load(sprintf("ber%s",suffix)) + 1E-6; + per = load(sprintf("per%s",suffix)) + 1E-6; + semilogy(snr, ber, sprintf('%s;%s %s ber;', colour, source, mode)); + semilogy(snr, per, sprintf('%s;%s %s per;', colour, source, mode),'linewidth',3,'markersize',10); +endfunction + +function per_v_snr(source, mode, channel, colour) + suffix = sprintf("_%s_%s_%s.txt",source, mode, channel); + snr = load(sprintf("snr%s",suffix)); + offset = load(sprintf("offset%s",suffix)); + snr -= offset; + per = load(sprintf("per%s",suffix)) + 1E-6; + if strcmp(channel,"awgn") + semilogy(snr, per, sprintf('%s;%s %s;', colour, mode, channel)); + else + semilogy(snr, per, sprintf('%s;%s %s;', colour, mode, channel),'linewidth',3,'markersize',10); + end +endfunction + +function thruput_v_snr(source, mode, channel, colour) + suffix = sprintf("_%s_%s_%s.txt",source, mode, channel); + snr = load(sprintf("snr%s",suffix)); + offset = load(sprintf("offset%s",suffix)); + snr -= offset; + per = load(sprintf("per%s",suffix)) + 1E-6; + if strcmp(mode,"datac0") Rb=291; end; + if strcmp(mode,"datac1") Rb=980; end; + if strcmp(mode,"datac3") Rb=321; end; + if strcmp(mode,"datac4") Rb=87; end; + if strcmp(mode,"datac13") Rb=65; end; + if strcmp(mode,"datac14") Rb=58; end; + if strcmp(channel,"awgn") + plot(snr, Rb*(1-per), sprintf('%s;%s %s;', colour, mode, channel)); + else + plot(snr, Rb*(1-per), sprintf('%s;%s %s;', colour, mode, channel),'linewidth',3,'markersize',10); + end +endfunction + +function octave_ch_noise_screen(channel) + clf; hold on; + ber_per_v_snr('oct','datac0',channel,'bo-') + ber_per_v_snr('ch' ,'datac0',channel,'bx-') + ber_per_v_snr('oct','datac1',channel,'go-') + ber_per_v_snr('ch' ,'datac1',channel,'gx-') + ber_per_v_snr('oct','datac3',channel,'ro-') + ber_per_v_snr('ch' ,'datac3',channel,'rx-') + xlabel('SNR (dB)'); grid; + hold off; + if strcmp(channel,"awgn") + axis([-6 8 1E-3 1]); + else + axis([-2 12 1E-3 1]); + end + title(sprintf('Comparsion of Measuring SNR from Octave and ch tool (%s)', channel)); +endfunction + +function octave_ch_noise_print(channel) + state_vec = set_graphics_state_print(); + octave_ch_noise_screen(channel); + print(sprintf("octave_ch_noise_%s.png", channel), "-dpng","-S1000,800"); + set_graphics_state_screen(state_vec); +endfunction + +function octave_c_tx_screen(channel) + clf; hold on; + ber_per_v_snr('oct','datac0',channel,'bo-') + ber_per_v_snr('ctx','datac0',channel,'bx-') + ber_per_v_snr('oct','datac1',channel,'go-') + ber_per_v_snr('ctx','datac1',channel,'gx-') + ber_per_v_snr('oct','datac3',channel,'ro-') + ber_per_v_snr('ctx','datac3',channel,'rx-') + xlabel('SNR (dB)'); grid; + hold off; + if strcmp(channel,"awgn") + axis([-6 8 1E-3 1]); + else + axis([-2 12 1E-3 1]); + end + title(sprintf('Comparsion of Octave Tx and C Tx (no compression) (%s)', channel)); +endfunction + +function octave_c_tx_print(channel) + state_vec = set_graphics_state_print(); + octave_c_tx_screen(channel); + print(sprintf("octave_c_tx_%s.png", channel), "-dpng","-S1000,800"); + set_graphics_state_screen(state_vec); +endfunction + +function octave_c_tx_comp_screen(channel) + clf; hold on; + ber_per_v_snr('oct','datac0',channel,'bo-') + ber_per_v_snr('ctxc','datac0',channel,'bx-') + ber_per_v_snr('oct','datac1',channel,'go-') + ber_per_v_snr('ctxc','datac1',channel,'gx-') + ber_per_v_snr('oct','datac3',channel,'ro-') + ber_per_v_snr('ctxc','datac3',channel,'rx-') + xlabel('SNR (dB)'); grid; + hold off; + if strcmp(channel,"awgn") + axis([-6 8 1E-3 1]); + else + axis([-2 12 1E-3 1]); + end + title(sprintf('Comparsion of Octave Tx and C Tx (with compression) (%s)', channel)); +endfunction + +function octave_c_tx_comp_print(channel) + state_vec = set_graphics_state_print(); + octave_c_tx_comp_screen(channel); + print(sprintf("octave_c_tx_comp_%s.png", channel), "-dpng","-S1000,800"); + set_graphics_state_screen(state_vec); +endfunction + +% composite AWGN and MPP for compressed +function c_tx_comp_screen + clf; hold on; + per_v_snr('ctxc','datac0','awgn','bo-') + per_v_snr('ctxc','datac1','awgn','go-') + per_v_snr('ctxc','datac3','awgn','ro-') + per_v_snr('ctxc','datac4','awgn','co-') + per_v_snr('ctxc','datac13','awgn','mo-') + per_v_snr('ctxc','datac14','awgn','ko-') + per_v_snr('ctxc','datac0','mpp','bx-') + per_v_snr('ctxc','datac1','mpp','gx-') + per_v_snr('ctxc','datac3','mpp','rx-') + per_v_snr('ctxc','datac4','mpp','cx-') + per_v_snr('ctxc','datac13','mpp','mx-') + per_v_snr('ctxc','datac14','mpp','kx-') + xlabel('SNR (dB)'); ylabel('PER'); grid; + hold off; + axis([-10 14 1E-3 1]); + title('PER of C Raw Data Modes (with compression)'); +endfunction + +function c_tx_comp_print; + state_vec = set_graphics_state_print(); + c_tx_comp_screen; + print("c_tx_comp.png", "-dpng","-S1000,800"); + set_graphics_state_screen(state_vec); +endfunction + +function c_tx_comp_thruput_screen + clf; hold on; + thruput_v_snr('ctxc','datac0','awgn','bo-') + thruput_v_snr('ctxc','datac1','awgn','go-') + thruput_v_snr('ctxc','datac3','awgn','ro-') + thruput_v_snr('ctxc','datac4','awgn','co-') + thruput_v_snr('ctxc','datac13','awgn','mo-') + thruput_v_snr('ctxc','datac14','awgn','ko-') + thruput_v_snr('ctxc','datac0','mpp','bx-') + thruput_v_snr('ctxc','datac1','mpp','gx-') + thruput_v_snr('ctxc','datac3','mpp','rx-') + thruput_v_snr('ctxc','datac4','mpp','cx-') + thruput_v_snr('ctxc','datac13','mpp','mx-') + thruput_v_snr('ctxc','datac14','mpp','kx-') + xlabel('SNR (dB)'); ylabel('bits/s'); grid; + hold off; + axis([-10 10 0 1000]); + title(' Throughput for C Tx (with compression)'); + legend('location','west'); +endfunction + +function c_tx_comp_thruput_print; + state_vec = set_graphics_state_print; + c_tx_comp_thruput_screen; + print("c_tx_comp_thruput.png", "-dpng","-S1000,800"); + set_graphics_state_screen(state_vec); +endfunction + +#{ +figure(1); octave_ch_noise_screen; +figure(2); octave_c_tx_screen; +figure(3); octave_c_tx_comp_screen +figure(4); snrest_snr_screen; + +figure(5); octave_ch_noise_print; +figure(6); octave_c_tx_print; +figure(7); octave_c_tx_comp_print; +figure(8); snrest_snr_print; +#} diff --git a/src/ch.c b/src/ch.c index 9d8d895..45e1b49 100644 --- a/src/ch.c +++ b/src/ch.c @@ -256,7 +256,7 @@ int main(int argc, char *argv[]) { stderr, "\nAdjust path --fading_dir or use GNU Octave to generate:\n\n"); gen_fading_file: - fprintf(stderr, "$ octave --no-gui\n"); + fprintf(stderr, "$ octave-cli\n"); fprintf(stderr, "octave:24> pkg load signal\n"); fprintf(stderr, "octave:24> time_secs=60\n"); fprintf(stderr, diff --git a/unittest/check_peak.sh b/unittest/check_peak.sh index 8f41c2a..b357534 100755 --- a/unittest/check_peak.sh +++ b/unittest/check_peak.sh @@ -51,6 +51,7 @@ if [ "$1" == "LPCNet" ]; then data_test "datac3" data_test "datac4" data_test "datac13" + data_test "datac14" fi exit 0 diff --git a/unittest/raw_data_curves/Makefile b/unittest/raw_data_curves/Makefile new file mode 100644 index 0000000..09aa7ca --- /dev/null +++ b/unittest/raw_data_curves/Makefile @@ -0,0 +1,149 @@ +# Makefile +# Dec 2022 +# +# Automates PER/BER curve generation for raw data mode: +# +# 1. Compare "ch" noise injection/SNR measurement against reference Octave Tx +# 2. Compare C Tx against Octave Tx (with and without compression) +# 3. Plot curves for SNR estimated from C Rx against actual SNR +# 4. Plot AWGN/PER C Tx curves for end user documentation +# +# usage: +# +# 1. Create 20 minutes of MPP fading samples: +# $ cd codec2/octave/ +# $ octave-cli +# octave:24> pkg load signal +# octave:24> time_secs=60*20 +# octave:26> ch_fading("~/codec2/build_linux/unittest/fast_fading_samples.float", 8000, 1.0, 8000*time_secs) +# +# 2. Run scripts: +# +# $ make + +SHELL := /bin/bash +CODEC2 := $(HOME)/codec2 + +all: test \ + octave_ch_noise_awgn.png octave_c_tx_awgn.png octave_c_tx_comp_awgn.png \ + octave_ch_noise_mpp.png octave_c_tx_mpp.png octave_c_tx_comp_mpp.png \ + snrest_snr_ctx.png snrest_snr_ctxc.png \ + c_tx_comp.png c_tx_comp_thruput.png + +clean: + rm -f *.txt *.png *.raw + +# run this first, traps common CML setup error +test: + source snr_curves.sh; test_ldpc + +# subset of files generated, but enough to set up Makefile dependencies +snr_oct = snr_oct_datac0_awgn.txt snr_oct_datac1_awgn.txt snr_oct_datac3_awgn.txt +snr_ch = snr_ch_datac0_awgn.txt snr_ch_datac1_awgn.txt snr_ch_datac3_awgn.txt +snr_ctx = snr_ctx_datac0_awgn.txt snr_ctx_datac1_awgn.txt snr_ctx_datac3_awgn.txt +snr_ctxc = snr_ctxc_datac0_awgn.txt snr_ctxc_datac3_awgn.txt + +snr_oct_mpp = snr_oct_datac0_mpp.txt snr_oct_datac1_mpp.txt snr_oct_datac3_mpp.txt +snr_ch_mpp = snr_ch_datac0_mpp.txt snr_ch_datac1_mpp.txt snr_ch_datac3_mpp.txt +snr_ctx_mpp = snr_ctx_datac0_mpp.txt snr_ctx_datac1_mpp.txt snr_ctx_datac3_mpp.txt +snr_ctxc_mpp = snr_ctxc_datac0_mpp.txt snr_ctxc_datac3_mpp.txt + +$(snr_oct): + source snr_curves.sh; generate_octave_tx_data datac0 awgn + source snr_curves.sh; generate_octave_tx_data datac1 awgn + source snr_curves.sh; generate_octave_tx_data datac3 awgn + +$(snr_oct_mpp): + source snr_curves.sh; generate_octave_tx_data datac0 mpp + source snr_curves.sh; generate_octave_tx_data datac1 mpp + source snr_curves.sh; generate_octave_tx_data datac3 mpp + +$(snr_ch): + source snr_curves.sh; generate_ch_data datac0 awgn + source snr_curves.sh; generate_ch_data datac1 awgn + source snr_curves.sh; generate_ch_data datac3 awgn + +$(snr_ch_mpp): + source snr_curves.sh; generate_ch_data datac0 mpp + source snr_curves.sh; generate_ch_data datac1 mpp + source snr_curves.sh; generate_ch_data datac3 mpp + +# C without compression + +$(snr_ctx): + source snr_curves.sh; generate_snrest_v_snr_data datac0 awgn + source snr_curves.sh; generate_snrest_v_snr_data datac1 awgn + source snr_curves.sh; generate_snrest_v_snr_data datac3 awgn + source snr_curves.sh; generate_snrest_v_snr_data datac4 awgn + source snr_curves.sh; generate_snrest_v_snr_data datac13 awgn + source snr_curves.sh; generate_snrest_v_snr_data datac14 awgn + +$(snr_ctx_mpp): + source snr_curves.sh; generate_snrest_v_snr_data datac0 mpp + source snr_curves.sh; generate_snrest_v_snr_data datac1 mpp + source snr_curves.sh; generate_snrest_v_snr_data datac3 mpp + source snr_curves.sh; generate_snrest_v_snr_data datac4 mpp + source snr_curves.sh; generate_snrest_v_snr_data datac13 mpp + source snr_curves.sh; generate_snrest_v_snr_data datac14 mpp + +# C with compression + +$(snr_ctxc): + source snr_curves.sh; generate_snrest_v_snr_data datac0 awgn 1 + source snr_curves.sh; generate_snrest_v_snr_data datac1 awgn 1 + source snr_curves.sh; generate_snrest_v_snr_data datac3 awgn 1 + source snr_curves.sh; generate_snrest_v_snr_data datac4 awgn 1 + source snr_curves.sh; generate_snrest_v_snr_data datac13 awgn 1 + source snr_curves.sh; generate_snrest_v_snr_data datac14 awgn 1 + +$(snr_ctxc_mpp): + source snr_curves.sh; generate_snrest_v_snr_data datac0 mpp 1 + source snr_curves.sh; generate_snrest_v_snr_data datac1 mpp 1 + source snr_curves.sh; generate_snrest_v_snr_data datac3 mpp 1 + source snr_curves.sh; generate_snrest_v_snr_data datac4 mpp 1 + source snr_curves.sh; generate_snrest_v_snr_data datac13 mpp 1 + source snr_curves.sh; generate_snrest_v_snr_data datac14 mpp 1 + +# Octave and C curves should be on top of each other, indicating Octave +# and ch noise injection/SNR measurement are equivalent +octave_ch_noise_awgn.png: $(snr_oct) $(snr_ch) + echo "snr_curves_plot; octave_ch_noise_print('awgn'); quit" | \ + octave-cli -p $(CODEC2)/octave +octave_ch_noise_mpp.png: $(snr_oct_mpp) $(snr_ch_mpp) + echo "snr_curves_plot; octave_ch_noise_print('mpp'); quit" | \ + octave-cli -p $(CODEC2)/octave + +# Octave Tx and C Tx curves should be on top of each other +octave_c_tx_awgn.png: $(snr_oct) $(snr_ctx) + echo "snr_curves_plot; octave_c_tx_print('awgn'); quit" | \ + octave-cli -p $(CODEC2)/octave +octave_c_tx_mpp.png: $(snr_oct_mpp) $(snr_ctx_mpp) + echo "snr_curves_plot; octave_c_tx_print('mpp'); quit" | \ + octave-cli -p $(CODEC2)/octave + +# Octave Tx and C Tx (compressed) curves should be close, but C may be 1dB +# poorer +octave_c_tx_comp_awgn.png: $(snr_oc) $(snr_ctxc) + echo "snr_curves_plot; octave_c_tx_comp_print('awgn'); quit" | \ + octave-cli -p $(CODEC2)/octave +octave_c_tx_comp_mpp.png: $(snr_oct_mpp) $(snr_ctxc_mpp) + echo "snr_curves_plot; octave_c_tx_comp_print('mpp'); quit" | \ + octave-cli -p $(CODEC2)/octave + +# combined AWGN and MPP from C Tx (compressed) - what end users would run +c_tx_comp.png: $(snr_ctxc) $(snr_ctxc_mpp) + echo "snr_curves_plot; c_tx_comp_print; quit" | \ + octave-cli -p $(CODEC2)/octave + +# Curves of SNR estimates from C Rx compared to actual SNR, useful for "gear shifting" +snrest_snr_ctx.png: $(snr_ctx) + echo "snr_curves_plot; snrest_snr_print('ctx', 'awgn'); quit" | \ + octave-cli -p $(CODEC2)/octave +snrest_snr_ctxc.png: $(snr_ctxc) + echo "snr_curves_plot; snrest_snr_print('ctxc', 'awgn'); quit" | \ + octave-cli -p $(CODEC2)/octave + +# Throughput of payload data in bits/s of modes against SNR +c_tx_comp_thruput.png: $(snr_ctxc) $(snr_ctxc_mpp) + echo "snr_curves_plot; c_tx_comp_thruput_print; quit" | \ + octave-cli -p $(CODEC2)/octave diff --git a/unittest/raw_data_curves/snr_curves.sh b/unittest/raw_data_curves/snr_curves.sh new file mode 100755 index 0000000..62f0a52 --- /dev/null +++ b/unittest/raw_data_curves/snr_curves.sh @@ -0,0 +1,191 @@ +# snr_curves.sh +# +# Library of bash functions to generate data for SNR curves. +# +# testing a function example: +# $ bash -c "source ./snr_curves.sh; generate_octave_tx_data datac0 awgn" + +set -x + +PATH=${PATH}:${HOME}/codec2/build_linux/src +CODEC2=${HOME}/codec2 +FADING_DIR=${CODEC2}/build_linux/unittest + +snr_list='-5 -4 -3 -2 0 1 2 4' +No_list='-13 -14 -15 -16 -18 -20 -22 -24 -26' +Nbursts_awgn=20 +Nbursts_mpp=100 + +# Octave Tx injects noise and is source of truth for SNR, measure BER/PER v SNR +function generate_octave_tx_data { + mode=$1 + channel=$2 + + Nbursts=$Nbursts_awgn + snr_nudge=0 + if [ "$channel" == "mpp" ]; then + Nbursts=$Nbursts_mpp + snr_nudge=4 + fi + + rx_log=$(mktemp) + + i=1 + rm -f snr_oct_${mode}_${channel}*.txt + rm -f ber_oct_${mode}_${channel}*.txt + rm -f per_oct_${mode}_${channel}*.txt + for snr in $snr_list + do + snr_adj=$((${snr}+${snr_nudge})) + echo "warning ('off', 'Octave:data-file-in-path'); + ofdm_ldpc_tx('test_${mode}.raw','${mode}',1,${snr_adj},'${channel}','bursts',${Nbursts},'crc'); + quit" | DISPLAY="" octave-cli -p ${CODEC2}/octave + freedv_data_raw_rx --testframes $mode test_${mode}.raw /dev/null 2>${rx_log} -v + BERmeas=$(cat ${rx_log} | grep 'BER......:' | cut -d' ' -f2) + PERmeas=$(cat ${rx_log} | grep 'Coded FER' | cut -d' ' -f3) + + echo ${snr_adj} >> snr_oct_${mode}_${channel}.txt + echo ${BERmeas} >> ber_oct_${mode}_${channel}.txt + echo ${PERmeas} >> per_oct_${mode}_${channel}.txt + i=$((i+1)) + done + echo 0 > offset_oct_${mode}_${channel}.txt +} + +# ch injects noise and is source of truth for SNR, measure BER/PER v SNR +# Octave Tx +function generate_ch_data { + mode=$1 + channel=$2 + + ch_multipath='' + Nbursts=$Nbursts_awgn + snr_nudge=0 + if [ "$channel" == "mpp" ]; then + ch_multipath='--mpp' + Nbursts=$Nbursts_mpp + snr_nudge=4 + fi + + octave_log=$(mktemp) + ch_log=$(mktemp) + rx_log=$(mktemp) + + i=1 + rm -f snr_ch_${mode}_${channel}*.txt + rm -f ber_ch_${mode}_${channel}*.txt + rm -f per_ch_${mode}_${channel}*.txt + for No in $No_list + do + No_adj=$((${No}-${snr_nudge})) + echo "warning ('off', 'Octave:data-file-in-path'); + ofdm_ldpc_tx('test_${mode}.raw','${mode}',1,100,'awgn','bursts',${Nbursts},'crc'); + quit" | DISPLAY="" octave-cli -p ${CODEC2}/octave 1>${octave_log} + SNRoffset=$(cat ${octave_log} | grep 'Burst offset:' | cut -d' ' -f5) + + ch test_${mode}.raw - --No $No_adj ${ch_multipath} --fading_dir ${FADING_DIR} 2>>${ch_log} | \ + freedv_data_raw_rx --testframes $mode - /dev/null -v 2>${rx_log} + BERmeas=$(cat ${rx_log} | grep 'BER......:' | cut -d' ' -f2) + PERmeas=$(cat ${rx_log} | grep 'Coded FER' | cut -d' ' -f3) + + echo ${BERmeas} >> ber_ch_${mode}_${channel}.txt + echo ${PERmeas} >> per_ch_${mode}_${channel}.txt + i=$((i+1)) + + # trap not enough fading file samples (with mpp) + grep "Fading file finished" ${ch_log} + if [ $? -eq 0 ]; then + cat ${ch_log} + exit 1 + fi + done + + echo ${SNRoffset} > offset_ch_${mode}_${channel}.txt + SNRch=$(cat ${ch_log} | grep SNR3k | tr -s ' ' | cut -d' ' -f3) + echo ${SNRch} > snr_ch_${mode}_${channel}.txt +} + +# ch injects noise and is source of truth for SNR, measure BER/PER v SNR and +# SNR estimates v SNR from rx, C Tx +function generate_snrest_v_snr_data { + mode=$1 + channel=$2 + + snr_nudge=0 + aNo_list=$No_list + + # nudge SNR test range to get meaningful results for these tests + if [ "$mode" == "datac1" ]; then + snr_nudge=4 + fi + if [[ "$mode" == "datac4" || "$mode" == "datac13" || "$mode" == "datac14" ]]; then + snr_nudge=-6 + fi + + ch_multipath='' + Nbursts=$Nbursts_awgn + if [ "$channel" == "mpp" ]; then + ch_multipath='--mpp' + Nbursts=$Nbursts_mpp + snr_nudge=$((${snr_nudge}+4)) + fi + + clip=0 + id='ctx' + if [ "$#" -eq 3 ]; then + clip=$3 + id='ctxc' + snr_nudge=$((${snr_nudge}-4)) + fi + + tx_log=$(mktemp) + ch_log=$(mktemp) + rx_log=$(mktemp) + + i=1 + rm -f snrest_${id}_${mode}_${channel}*.txt + rm -f ber_${id}_${mode}_${channel}*.txt + rm -f per_${id}_${mode}_${channel}*.txt + for No in $aNo_list + do + No_adj=$((${No}-${snr_nudge})) + freedv_data_raw_tx --clip ${clip} --delay 1000 --txbpf ${clip} --bursts $Nbursts --testframes $Nbursts $mode /dev/zero - 2>${tx_log} | \ + ch - - --No $No_adj ${ch_multipath} --fading_dir ${FADING_DIR} 2>>${ch_log} | \ + freedv_data_raw_rx --testframes $mode - /dev/null 2>${rx_log} -v + SNRoffset=$(cat ${tx_log} | grep "mark:space" | tr -s ' ' | cut -d' ' -f 5) + + SNRest=$(cat ${rx_log} | grep '\-BS\-' | tr -s ' ' | cut -d' ' -f17) + if [ ! -z "$SNRest" ]; then + echo ${SNRest} > snrest_${id}_${mode}_${channel}_${i}.txt + fi + BERmeas=$(cat ${rx_log} | grep 'BER......:' | cut -d' ' -f2) + PERmeas=$(cat ${rx_log} | grep 'Coded FER' | cut -d' ' -f3) + echo ${BERmeas} >> ber_${id}_${mode}_${channel}.txt + echo ${PERmeas} >> per_${id}_${mode}_${channel}.txt + i=$((i+1)) + done + + echo ${SNRoffset} > offset_${id}_${mode}_${channel}.txt + + # trap not enough fading file samples (with mpp) + grep "Fading file finished" ${ch_log} + if [ $? -eq 0 ]; then + cat ${ch_log} + exit 1 + fi + SNRch=$(cat ${ch_log} | grep SNR3k | tr -s ' ' | cut -d' ' -f3) + echo ${SNRch} > snr_${id}_${mode}_${channel}.txt +} + +# Sanity check to make sure Octave/CML is set up OK +function test_ldpc { + echo "ldpcut; quit" | DISPLAY="" octave-cli -p ${CODEC2}/octave + if [ "$?" -ne 0 ]; then + echo "basic octave test failed, you may need to" + echo "(a) run ctests to create build_xxx/cml" + echo "(b) set up ~/.octaverc as per octave/ldpc.m" + exit 1 + else + echo "OK" + fi +} From 8241e30b7ca8784cfac6450b5c84c5b8722c53d5 Mon Sep 17 00:00:00 2001 From: Lukas Ostendorf Date: Fri, 19 Apr 2024 18:25:23 +0200 Subject: [PATCH 22/23] pkg-config: Fix include dirs in codec2.pc --- codec2.pc.in | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/codec2.pc.in b/codec2.pc.in index ecca704..1d0a565 100644 --- a/codec2.pc.in +++ b/codec2.pc.in @@ -1,10 +1,10 @@ prefix=@CMAKE_INSTALL_PREFIX@ libdir=@CMAKE_INSTALL_PREFIX@/@CMAKE_INSTALL_LIBDIR@ -includedir=@CMAKE_INSTALL_PREFIX@/@CMAKE_INSTALL_INCLUDEDIR@/codec2 +includedir=@CMAKE_INSTALL_PREFIX@/@CMAKE_INSTALL_INCLUDEDIR@ Name: codec2 Description: A speech codec for 2400 bit/s and below Requires: Version: @CODEC2_VERSION@ Libs: -L${libdir} -lcodec2 -Cflags: -I${includedir} +Cflags: -I${includedir} -I${includedir}/codec2 From 7f6188ccce691d8d93a1dd98ab86a9f0b23ffe36 Mon Sep 17 00:00:00 2001 From: drowe67 Date: Wed, 1 May 2024 15:56:01 +0930 Subject: [PATCH 23/23] adjusted clipper in C & octave, regerenerated curves --- README_data.md | 4 ++-- doc/c_tx_comp.png | Bin 36292 -> 39874 bytes doc/c_tx_comp_thruput.png | Bin 32796 -> 34357 bytes octave/ofdm_mode.m | 2 +- src/ofdm_mode.c | 4 ++-- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/README_data.md b/README_data.md index 3ceccb4..49fb9e3 100644 --- a/README_data.md +++ b/README_data.md @@ -146,7 +146,7 @@ These modes use an OFDM modem with powerful LDPC codes and are designed for send | DATAC3 | 500 | 321 | 126 | (2048,1024) | 3.19 | 74/100 at 0dB | Forward link data (low SNR) | | DATAC4 | 250 | 87 | 56 | (1472,448) | 5.17 | 90/100 at -4dB | Forward link data (low SNR) | | DATAC13 | 200 | 64 | 14 | (384,128) | 2.0 | 90/100 at -4dB | Reverse link ACK packets (low SNR) | -| DATAC14 | 250 | 58 | 3 | (112,56) | 0.69 | 90/100 at -4dB | Reverse link ACK packets (low SNR) | +| DATAC14 | 250 | 58 | 3 | (112,56) | 0.69 | 90/100 at -2dB | Reverse link ACK packets (low SNR) | Notes: 1. 16 bits (2 bytes) per frame are reserved for a 16 bit CRC, e.g. for `datac3` we have 128 byte frames, and 128-2=126 bytes/frame of payload data. @@ -246,7 +246,7 @@ This command line demonstrates the effect: ``` Try adjusting `--clip` and `No` argument of `ch` (noise level) for different modes. Note the SNR estimates returned from `freedv_data_raw_rx` compared to the SNR from the channel simulator `ch`. You will notice clipping also increases the RMS power and reduces the PER for a given channel noise power. CPAPR will also reduce with clipping enabled. -The following plots illustrate the SNR estimates versus actual channel SNR with and without compression (clipping). Not that even with the uncompressed waveform there is a small offset of around 1dB, possibly due to modem implementation loss or noise in the frequency, phase, or timing estimators. +The following plots illustrate the SNR estimates versus actual channel SNR with and without compression (clipping). Note that even with the uncompressed waveform there is a small offset of around 1dB, possibly due to modem implementation loss or noise in the frequency, phase, or timing estimators. ![](doc/snrest_snr_ctx.png) ![](doc/snrest_snr_ctxc.png) diff --git a/doc/c_tx_comp.png b/doc/c_tx_comp.png index 5d781c059cc0ec2f2c398ff19870ba13c161b1f1..a95047961d140ee2c7bba3776562badb02aa930d 100644 GIT binary patch literal 39874 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 literal 36292 zcmdSBbyOVPyCvMXCrAjc2@ss%?h@SH-GXc5A$V|if&`b~4#B071POu0HCW?rQ@r=y z`Q1BrX3aN$eyr82=%TyMsUy#`pS^bxsiGu$V4w*~ z#@2f`RZ%MXH%CS4V?+x)V^jpERJ;@%fk6tjz0@m=FTwDy-9IzIkG8qstBUD5uMp*2 zk%@FXW%y1yJ-Tf#yG`CW!%;?jw(NoUnyIz@fR4lx5xyEjTzMCrm)d)B?vAiB+l~XO z>i2D1nY^h+#YwQe-)d>;aJ``qb_abuu>3tHr>whH2vK+$_ta~xt@GVrm3>8L?QbCX zKz^c|={9j=f7~ztA00$We@pV>DeTGZC`yAj`20`l@W*0hR}CMnbjrkxrYSV?G|2g@ zw=x5?k^$<+Pbv3g-(;*xY9t+9M`^`Ax-0OX1-{^7XX8XPwmuo$mye^8ehQqlmNM?# z^a1^G15w^}`K+aY++pydx4*QN9a?LW{XqP%V-CcOC!f+3EG*O@_`jma@8C7RqPc&< zVM9p$@tPMzunOlVhW!V0O^N &Q-E)db}oNXmqQ7qwiJ*#@Ne6+as}XH~ETzWOtC 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

DK2i}?e~dpU5E+x_UBSPetoNL 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, uw, sizeof(uw)); memcpy(&config->tx_uw[config->nuwbits - sizeof(uw)], uw, sizeof(uw)); config->data_mode = "streaming"; - config->amp_scale = 2.5 * 300E3; - config->clip_gain1 = 1.2; + config->amp_scale = 2.0 * 300E3; + config->clip_gain1 = 2.0; config->clip_gain2 = 1.0; config->rx_bpf_en = true; } else {