⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tg7231decoder.m

📁 ITU-T G.723.1 Speech Coder: Matlab implementation This package implements the speech coder and de
💻 M
字号:
function tG7231Decoder (FName, FName2)% Compare Matlab decoder with reference C-code decoder% Default mode:%   tG7231Decoder           % Runs through 5 test files% Single file mode:%   tG7231Decoder (FName)   % Bit file to both decoders%   tG7231Decoder (FNameM, FNameC)  % Data file to Matlab decoder, bit file%                           % to C-code decoder.%   tG7231Decoder (FName, FNameErr) % Bit file to both decoders, frame%                           % error file to both decoders% Multiple test mode:%   tG7231Decoder (FNames)  % Cell array of file names%                           % Each element in the cell array is a file name%                           % (the bit file), or a cell array containing%                           % two file names (data file and bit file, or%                           % bit file and frame error file).% Notes:% - This version runs on Windows. Windows dependencies: Cygwin version of%   LBCCODE2; Windows version of CompAudio; Windows file compare utility.% - This should be run in folder test which is just below the place that%   G7231Decoder sits.% - The reference C-code was compiled under Cygwin (Unix subsystem running%   under Windows). The Cygwin dll is in the same folder as LBCCODE2.exe.% - The AFsp utility routine CompAudio (Windows version) is used to compare%   output files.% $Id: tG7231Decoder.m 1.3 2004/08/17 G.723.1-v2r1a $cd ..if (nargin == 0)  % Test exercising several decoder modes  RDir = fullfile ('test', 'ReferenceFiles');  % First group of files are input to Matlab  FName = {fullfile(RDir,'FE27_04_Mref63.bit'); ...           {fullfile(RDir,'FE27_04_Mref63.dat'); ...                     fullfile(RDir,'FE27_04_Mref63.bit')}; ...           fullfile(RDir,'FE27_04_Cref53.bit'); ...           fullfile(RDir,'DM29.C6V'); ...           {fullfile(RDir,'VAD6353.C5V'); ...                     fullfile(RDir,'VAD6353.BFI')}};endNt = 0;if (iscell (FName))  NFile = length (FName);  Nerr = 0;  Nt = 0;  for (i = 1:NFile)    if (iscell (FName{i}))      Nerr = Nerr + tDecoder (FName{i}{1}, FName{i}{2});    else      Nerr = Nerr + tDecoder (FName{i});    end    Nt = Nt + 1;  endelse  if (nargin == 1)    tDecoder (FName);  else    tDecoder (FName, FName2);  endendcd testif (Nt > 0)  fprintf ('Number of mismatched files: %d / %d\n', Nerr, Nt);endreturn% ----------function Err = tDecoder (FName, FName2)if (nargin == 2)  % Open the file for a peek at the first 6 characters  fid = fopen (FName);  if (fid == -1)    error ('G7231Decoder: Cannot open input file');  end  id = char (fread (fid, 6, 'uchar')');  fclose (fid);  BitStream = (~ strcmp (id, 'MATLAB'));  if (BitStream)    FNameM = FName;    FNameC = FName;    FNameErr = FName2;  else    FNameM = FName;    FNameC = FName2;    FNameErr = [];  endelse  FNameM = FName;  FNameC = FName;  FNameErr = [];endif (isempty (FNameErr))  FNameMwav = MDecoder (FNameM);  FNameCnh = CDecoder (FNameC);else  FNameMwav = MDecoder (FNameM, FNameErr);  FNameCnh =CDecoder (FNameC, FNameErr);endErr = Comp_Audio (FNameMwav, FNameCnh);delete (FNameMwav);delete (FNameCnh);return% ----------function FNameMwav = MDecoder (FName, FNameErr)[Path, Name, Ext] = fileparts (FName);FNameMwav = [Name '_Mdec.wav'];% Run the Matlab decoderdisp ('======');disp ('====== Running the Matlab decoder');if (nargin == 2)  G7231Decoder (FName, FNameMwav, FNameErr);else  G7231Decoder (FName, FNameMwav);endreturn% ----------function FNameCnh = CDecoder (FName, FNameErr)[Path, Name, Ext] = fileparts (FName);FNameCnh = [Name '_Cdec.nh'];% Create the headerless file for the C-code% Flags%  -r53 or -r63 or -rFilename: rate or rate file name (1 byte per frame)%  -c, -d, -b: coder only, decoder only, or both%  -v: use VAD/CNG%  -n: Suppress printing%  -Noh: No highpass filter%  -Nop: No postfilter%  -Rxx: Reinit size (reinitialize coder/decoder every xx frames)%  -fFile: Frame erasure file (1 byte per frame)disp ('====== Running the reference C decoder');LBCCODE = fullfile ('test', 'LBCCODE2.exe');Options = ' -n -d ';if (nargin == 2)  FErr = ['-f' FNameErr ' '];else  FErr = [];endeval (['! ' LBCCODE Options FErr FName ' ' FNameCnh]);return% ----------function Err = Comp_Audio (FName1, FName2)% Compare filesdisp ('');disp (['====== Comparing files']);COMPAUDIO = fullfile ('test', 'CompAudio.exe');text = evalc (['! ' COMPAUDIO ' -P integer16,0,8000,little-endian,1 ' ...              FName1 ' ' FName2]);disp (text);I = findstr (text, 'File A = File B');Err = (isempty (I));return;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -