Yanmo霍染 2022-10-30 11:11 采纳率: 88.9%
浏览 66
已结题

如何使用matlab将语谱图恢复成音频?

如题,可以说说使用matlab里的什么函数,或是什么方法,最好有代码,急用!万分感谢!

  • 写回答

3条回答 默认 最新

  • Jackyin0720 2022-10-30 15:01
    关注

    【语谱图的matlab提取】

    
    [x,Fs,nBits]=wavread('audio.wav');
    
    s=length(x);    % 信号长度
    w=256;            % 窗长
    n=w;            % nfft,表示做fft变换需要的点数,一般为刚大于w的2的幂。举例,w=250,则n一般设为256
    ov=w/2;            % 分帧的交叉程度,常见设为窗长的二分之一或四分之一
    h=w-ov;            % 不重叠点数
    win=hamming(n)';% 选了常见的汉明窗,并设置nfft
    c=1;            % 指向当前帧的指针
    ncols=1+fix((s-n)/h);    % 计算总共有多少帧
    d=zeros((1+n/2),ncols);    % 语谱图初始化
    
    for b=0:h:(s-n)    % 以下处理各帧
        u=win.*x((b+1):(b+n));    % 各帧加窗
        t=fft(u,n);                % 各帧进行fft,内容为u,nfft=n。对于fft,输入n个时域点,输出n个频域点
        d(:,c)=t(1:(1+n/2))';    % 并联频谱向量,注意只取1+n/2,因为负频率无意义,只留下0和正频率
        c=c+1;        % 移动指针
    end
    tt=[0:h:(s-n)]/Fs;    % 时间轴
    ff=[0:(n/2)]*Fs/n;    % 频率轴
    
    imagesc(tt/1000,ff/1000,20*log10(abs(d)));    % 绘制
    colormap(hot);
    axis xy
    xlabel('时间/s');
    ylabel('频率/kHz');
    
    
    

    利用MATLAB中的wavread命令来读入(采集)语音信号,将它赋值给某一向量,参考链接:https://blog.csdn.net/tobefans/article/details/125429377

    另外,这里最后提供一个应用MatLab对语音信号进行处理的笔记,供你参考,笔记讲述详细,注解清晰,应该可以有效的帮助你加深理解,祝你学有所成:
    https://zhuanlan.zhihu.com/p/57902993

    评论 编辑记录

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 11月6日
  • 修改了问题 10月30日
  • 赞助了问题酬金15元 10月30日
  • 创建了问题 10月30日

悬赏问题

  • ¥100 有偿,谁有移远的EC200S固件和最新的Qflsh工具。
  • ¥15 找一个QT页面+目标识别(行人检测)的开源项目
  • ¥15 有没有整苹果智能分拣线上图像数据
  • ¥20 有没有人会这个东西的
  • ¥15 cfx考虑调整“enforce system memory limit”参数的设置
  • ¥30 航迹分离,航迹增强,误差分析
  • ¥15 Chrome Manifest扩展引用Ajax-hook库拦截请求失败
  • ¥15 用Ros中的Topic通讯方式控制小乌龟的速度,走矩形;编写订阅器代码
  • ¥15 LLM accuracy检测
  • ¥15 pycharm添加远程解释器报错