首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MSR标识工具包(fopen)中出错

MSR标识工具包(fopen)中出错
EN

Stack Overflow用户
提问于 2016-11-02 00:44:39
回答 2查看 462关注 0票数 0

我尝试使用MSR Identity toolkit运行一个用于说话人验证的演示。然而,在训练UBM步骤后,它留下了错误。错误如下。它看起来像是fopen返回-1并导致fread出错。我不明白为什么它不能读取filenames。我不能附加代码,因为它涉及许多函数。我只希望熟悉这个工具包的人能帮助我。

代码语言:javascript
复制
Error using fread
Invalid file identifier. Use fopen to generate a valid file identifier.

Error in htkread (line 7)
nframes = fread(fid, 1, 'int32'); % number of frames

Error in mapAdapt>load_data (line 107)
    data{ix} = htkread(filenames{ix});

Error in mapAdapt (line 52)
    dataList = load_data(dataList);

Error in demo_gmm_ubm (line 69)
    gmm_models{spk} = mapAdapt(spk_files, ubm, map_tau, config);

导致错误的代码部分,如下所示:

代码语言:javascript
复制
function data = load_data(datalist)
% load all data into memory
if ~iscellstr(datalist)
    fid = fopen(datalist, 'rt');
    filenames = textscan(fid, '%s');
    fclose(fid);
    filenames = filenames{1};
else
    filenames = datalist;
end
nfiles = size(filenames, 1);
data = cell(nfiles, 1);
for ix = 1 : nfiles,
    data{ix} = htkread(filenames{ix});
end

function [data, frate, feakind] = htkread(filename)
% read features with HTK format (uncompressed)
fid = fopen(filename, 'r','b'); %ERROR HERE
nframes = fread(fid, 1, 'int32'); % number of frames
frate   = fread(fid, 1, 'int32'); % frame rate in nano-seconds unit
nbytes  = fread(fid, 1, 'short'); % number of bytes per feature value
feakind = fread(fid, 1, 'short'); % 9 is USER
ndim = nbytes / 4; % feature dimension (4 bytes per value)
data = fread(fid, [ndim, nframes], 'float');
fclose(fid);

datalist包含:

代码语言:javascript
复制
'features\fadg0_sa2.htk'
'features\fadg0_si1279.htk'
'features\fadg0_si1909.htk'
'features\fadg0_si649.htk'
'features\fadg0_sx109.htk'
'features\fadg0_sx19.htk'
'features\fadg0_sx199.htk'
'features\fadg0_sx289.htk'
'features\fadg0_sx379.htk'
EN

回答 2

Stack Overflow用户

发布于 2016-12-08 17:39:33

幸运的是,我使用MSR Identity Toolkit没有问题。

我在htkread.m中的内容如下:

..。

fid =fopen(文件名,'rb','ieee-be');

nframes = fread(fid,1,'int32');帧数百分比

..。

也许你遇到的错误来自于:

  • big-endian/little-endian issue
  • *.htk feature is missing
    • big-endian/little-endian *.htk is

    other format

致以敬意,

汤米

票数 0
EN

Stack Overflow用户

发布于 2017-02-27 14:13:34

你的fid返回的是负值吗?如果是,请尝试指定代码中包含dataList= 'ubm.lst';的整个路径

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40364593

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档