From: drowe67 Date: Tue, 14 Apr 2015 08:19:41 +0000 (+0000) Subject: 17 bit/frame mel LSP quantiser working OK X-Git-Url: http://git.whiteaudio.com/gitweb/?a=commitdiff_plain;h=d9d8950eeec29776164ae3266abbe5650cb2aa41;p=freetel-svn-tracking.git 17 bit/frame mel LSP quantiser working OK git-svn-id: https://svn.code.sf.net/p/freetel/code@2116 01035d8c-6547-0410-b346-abe4f91aad63 --- diff --git a/codec2-dev/octave/melstats.m b/codec2-dev/octave/melstats.m new file mode 100644 index 00000000..d3735597 --- /dev/null +++ b/codec2-dev/octave/melstats.m @@ -0,0 +1,49 @@ +% melstats.m +% David Rowe April 2015 +% +% plots some stats of mel/lsp quantisers + +function melstats(filename) + + mel = load(filename); + [m n] = size(mel); + nbins = 10; + + % histograms of each value + + figure(1) + clf + subplot(211) + [h x] = hist(mel(:,1),nbins); + plot(x,h,"1"); + hold on + + for i=2:n + [h x] = hist(mel(:,i),nbins); + colour = sprintf("%d",i); + plot(x,h,colour); + end + hold off + + % histograms differences + + subplot(212) + [h x] = hist(mel(:,1),nbins); + plot(x,h,"1"); + hold on + + for i=2:n + [h x] = hist(mel(:,i)-mel(:,i-1),nbins); + colour = sprintf("%d",i); + plot(x,h, colour); + end + hold off + + figure(2) + plot(mel(:,1),mel(:,2),'r+') + hold on; + plot(mel(:,3),mel(:,4),'g+') + plot(mel(:,5),mel(:,6),'b+') + hold off; + +endfunction diff --git a/codec2-dev/octave/sd.m b/codec2-dev/octave/sd.m index efff9061..8065de79 100644 --- a/codec2-dev/octave/sd.m +++ b/codec2-dev/octave/sd.m @@ -36,6 +36,7 @@ function sd(raw_filename, dump_file_prefix, f) plot(s); subplot(212) plot(sd); + axis([1 frames 0 10]) lsp1_filename = sprintf("%s_lsp.txt", dump_file_prefix); lsp2_filename = sprintf("%s_lsp_.txt", dump_file_prefix); diff --git a/codec2-dev/src/CMakeLists.txt b/codec2-dev/src/CMakeLists.txt index 43f9a181..30b26513 100644 --- a/codec2-dev/src/CMakeLists.txt +++ b/codec2-dev/src/CMakeLists.txt @@ -78,6 +78,15 @@ set(CODEBOOKSVQANSSI ${D}/lspvqanssi4.txt ) +set(CODEBOOKSMEL + ${D}/mel1.txt + ${D}/mel2.txt + ${D}/mel3.txt + ${D}/mel4.txt + ${D}/mel5.txt + ${D}/mel6.txt +) + set(CODEBOOKSGE ${D}/gecb.txt) # when crosscompiling import the executable targets from a file @@ -147,6 +156,13 @@ add_custom_command( DEPENDS generate_codebook ${CODEBOOKSVQANSSI} ) +# codebookmel.c +add_custom_command( + OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/codebookmel.c + COMMAND generate_codebook mel_cb ${CODEBOOKSMEL} > ${CMAKE_CURRENT_BINARY_DIR}/codebookmel.c + DEPENDS generate_codebook ${CODEBOOKSMEL} +) + # codebookge.c add_custom_command( OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/codebookge.c @@ -183,6 +199,7 @@ set(CODEC2_SRCS codebookjvm.c codebookvqanssi.c codebookdt.c + codebookmel.c codebookge.c golay23.c freedv_api.c diff --git a/codec2-dev/src/c2sim.c b/codec2-dev/src/c2sim.c index b653b203..44fe1670 100644 --- a/codec2-dev/src/c2sim.c +++ b/codec2-dev/src/c2sim.c @@ -591,34 +591,33 @@ int main(int argc, char *argv[]) */ if (lspmel) { - float f, f_; - int mel[LPC_ORD]; + float f, f_, dmel; + float mel[LPC_ORD]; + int mel_indexes[LPC_ORD]; - for(i=0; i