手机对话中的语音处理(四)


本系列文章由 @YhL_Leo 出品,转载请注明出处。
文章链接: http://blog.csdn.net/yhl_leo/article/details/50359613


根据前面的博客,我们如果将之前的语音帧的处理通过循环,作用在整段语音上,当然就可以得到合成整段语音~

同样我们还是讲语音帧设为30毫秒,相邻帧之间的重叠度为20毫秒,仍然使用Hamming加权窗。在合成的时候,每次合成10毫秒的语音,然后连接后面的语音。另外,我们这里固定合成语音的基频 F0 为200Hz,为了省事,每10毫秒的语音对应的激励脉冲只包含两个脉冲信号,请看下面的代码实现:

clc; clear;

[speech,fs,bits] = wavread('h_orig.wav');
figure(1);
plot(speech);
synt_speech_HF = [];

for i=1:(length(speech)-160)/80; % number of frames
    % Extracting the analysis frame
    input_frame=speech((i-1)*80+1:(i-1)*80+240);
    % Hamming window weighting and LPC analysis
    [ai, sigma_square]=lpc(input_frame.*hamming(240),10);
    sigma=sqrt(sigma_square);
    % Generating 10 ms of excitation = 2 pitch periods at 200 Hz
    excitation=[1;zeros(39,1);1;zeros(39,1)];
    gain=sigma/sqrt(1/40);
    % Applying the synthesis filter
    synt_frame=filter(gain, ai,excitation);
    % Concatenating synthesis frames
    synt_speech_HF=[synt_speech_HF;synt_frame];
end
figure(2);
plot(synt_speech_HF);



图 1 原始语音波形



图 2 LP合成语音波形

从整体上看,两者的波形比较相似,但是还是可以看出两者还是有点差距的,原语音中前半部分的振幅跟中间部分的一个片段是相似的,但合成语音中前半部分明显高于后半部分,这是由于采用的激励信号过于简单,现在我们调整一下:

for i=1:(length(speech)-160)/80; % number of frames
    % Extracting the analysis frame
    input_frame=speech((i-1)*80+1:(i-1)*80+240);
    % Hamming window weighting and LPC analysis
    [ai, sigma_square]=lpc(input_frame.*hamming(240),10);
    sigma=sqrt(sigma_square);
    % Generating 10 ms of excitation taking a possible offset into account
    % if pitch period length > excitation frame length
    if offset>=80
        excitation=zeros(80,1);
        offset=offset-80;
    else 
        % complete the previously unfinished pitch period
        excitation=zeros(offset,1); 
        % for all pitch periods in the remaining of the frame
        for j=1:floor((80-offset)/N0) 
            % add one excitation period
            excitation=[excitation;1;zeros(N0-1,1)]; 
        end;
        % number of samples left in the excitation frame
        flush=80-length(excitation); 
        if flush~=0 
            % fill the frame with a partial pitch period
            excitation=[excitation;1;zeros(flush-1,1)]; 
            % remember to fill the remaining of the period in next frame 
            offset=N0-flush; 
        else offset=0;
        end
    end
    gain=sigma/sqrt(1/N0);
    % Applying the synthesis filter
    synt_frame=filter(gain, ai,excitation);
    % Concatenating synthesis frames
    synt_speech_HF=[synt_speech_HF;synt_frame];
end



图 3 LP合成语音波形

这样是不是跟原信号更加接近了?

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 语音输入识别硬件通常包括: 1. 麦克风:可以捕捉说话者的声音 2. 语音识别芯片:可以实现语音信号的处理、识别和转换为文字的功能 3. 智能音箱:是一种具有语音识别功能的智能硬件,可以作为家庭智能心,用于语音对话、播放音乐、控制家用电器等 4. 智能手机:现代智能手机也拥有语音识别功能,可以通过语音命令实现一些操作 5. 笔记型电脑:一些笔记型电脑也配备了语音识别功能,可以通过语音命令实现操作。 ### 回答2: 语音输入识别是一种将人的语音信息转换为文本或命令的技术。以下是一些常见用于语音输入识别的硬件设备: 1. 话筒/麦克风:话筒或麦克风是最基本的硬件设备,可以接收用户的语音输入,并将其转换为电信号发送给计算机进行处理。 2. USB麦克风:USB麦克风是一种可以通过USB接口连接到计算机的麦克风设备。它可以提供更好的音频质量和音频采集效果。 3. 声纹识别设备:声纹识别设备是一种用于采集和识别声纹特征的硬件。它可以根据人的声音特征进行语音输入识别,识别结果具有个体的唯一性,可应用于身份认证等应用领域。 4. 手持式录音设备:手持式录音设备(如录音笔)可以在不同环境下采集用户的语音输入,并将其转换为数字音频文件。这些文件可以通过计算机进行后续语音识别处理。 5. 移动设备:智能手机、平板电脑等移动设备通常配备了麦克风,可以进行语音输入识别。用户可以通过语音助手(如Siri、Google Assistant等)进行语音输入命令、语音搜索等操作。 这些硬件设备可以与语音识别软件结合使用,在不同领域应用语音输入识别技术,如智能家居、智能办公、语音助手、语音搜索等。 ### 回答3: 语音输入识别是指通过硬件设备将人的语音转换为可识别的文本,现在市场上有许多硬件设备可以实现这一功能。 首先,智能手机是最常见的语音输入识别硬件。智能手机内置了麦克风,用户可以通过手机语音输入功能进行语音识别。智能手机上的语音助手,如Siri和Google Assistant也使用了语音输入识别技术。 其次,电脑也可以实现语音输入识别。用户可以通过插入外部麦克风设备,在电脑上安装相关软件,实现语音输入识别功能。同时,一些现代笔记本电脑也内置了麦克风,可以直接进行语音输入。 除此之外,智能音箱和智能音频设备也可以进行语音输入识别。这些设备通常配备了多个麦克风和专门的语音处理芯片,可以实现远距离语音输入识别。 另外,在一些工业领域,如安防监控和语音识别系统,专门的麦克风阵列硬件也被广泛应用。这些硬件可以准确捕捉语音信号,并通过复杂的算法对语音进行分析和识别。 总的来说,语音输入识别可以通过麦克风和相关的硬件设备实现,用户可以根据不同的需求选择合适的硬件设备来进行语音输入识别。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值