1、南 京 邮 电 大 学 通 达 学 院实 验 报 告实验名称 语音时频参数的提取和应用实验 语音编码实验 课程名称 信息处理技术专业综合实验 班级学号 姓 名 开课时间 2016/2017 学年, 第 二 学期 实验一 语音时频参数的提取和应用一、实验目的熟 悉 基 本 的 语 音 时 频 参 数 提 取 方 法 , 观 察 并 比 较 各 类 参 数 采 用 不 同 提 取 方 法 的 效果 , 了 解 这 些 时 频 参 数 在 语 音 处 理 中 的 应 用 。二、实验内容1、 编 写 并 调 试 语 音 时 域 参 数 提 取 程 序 , 包 括 短 时 功 率 、 短 时 过 零 率
2、 等 函 数 。2、 编 写 并 调 试 语 音 频 域 参 数 提 取 程 序 , 包 括 频 谱 、 语 谱 图 、 基 音 频 率 、 共 振 峰等 。3、 利 用 提 取 出 的 时 频 参 数 对 语 音 信 号 进 行 静 /清 /浊 音 的 划 分 。三、实验原理语 音 信 号 具 有 短 时 平 稳 性 , 需 对 其 进 行 分 段 ( 帧 ) 处 理 ( 帧 长 一 般 取 10至30ms之 间 ) 。根 据 激 励 方 式 的 不 同 , 语 音 信 号 可 以 分 成 浊 音 和 清 音 两 大 类 :浊 音 : 激 励 源 可 模 拟 成 准 周 期 性 的 脉 冲
3、串 。 该 周 期 称 为 基 音 周 期 , 其 倒 数 就 是 基音 频 率 , 基 音 频 率 一 般 在 几 百 赫 兹 以 内 。清 音 : 激 励 源 可 模 拟 成 随 机 白 噪 声 。简 化 的 语 音 生 成 数 学 模 型 如 图 所 示 :准周期脉冲序列发生器随机噪声发生器基音周期时变线性系 统浊音清音增益控制时变参数语音取样值对 语 音 时 频 波 形 进 行 绘 制 与 观 察 , 有 助 于 了 解 语 音 的 清 /浊 音 等 特 性 。 对 基 音 周期 等 声 门 参 数 和 共 振 峰 等 声 道 参 数 进 行 提 取 与 分 析 , 是 语 音 处 理
4、 与 应 用 的 重 要 内 容 。 对 于 时 变 语 音 信 号 , 可 以 计 算 它 的 短 时 功 率 和 短 时 过 零 率 。)(nx )(mPx )(mZx第 m帧 ( 帧 长 为 N个 样 点 ) 的 功 率 计 算 公 式 为 :21)()(mNnxxP过 零 率 计 算 公 式 为 : mNnx nxsigxsiZ12)1()()(对 于 浊 音 语 音 , 可 以 利 用 其 频 谱 具 有 丰 富 的 谐 波 分 量 的 特 点 , 求 出 其 谐)(X波 乘 积 谱 , 计 算 公 式 为 :RrHPSx1)()(式 中 , R一 般 取 为 5。 在 谐 波 乘
5、积 谱 中 , 基 频 分 量 变 得 很 大 , 更 易 于 估 计 基 音 周 期 。四、实验方法及程序1. 调 用 matlab中 的 wavread和 wavplay读 入 并 播 放 语 音 文 件 。2. 调 用 fft命 令 计 算 语 音 的 频 谱 。3. 调 用 specgram命 令 得 到 语 音 的 语 谱 图 。4. 调 用 plot命 令 绘 制 并 观 察 语 音 的 时 频 域 波 形 。5. 根 据 短 时 功 率 、 短 时 过 零 率 、 谐 波 乘 积 谱 的 计 算 公 式 , 编 写 分 别 用 以 计 算 短 时功 率 、 短 时 过 零 率 、
6、 基 音 频 率 的 函 数 : function Px=stpower、 function Zx = stzerocross(x, N) 和 function HPSx = hpspectrum(x,N,R)。6. 利 用 短 时 功 率 和 短 时 过 零 率 这 两 个 参 数 可 以 对 语 音 信 号 进 行 浊 音 /清 音 分 类 。编 写 实 现 此 分 类 功 能 的 函 数 voiunvoi.m。五、实验结果与分析1. 清 音 和 浊 音 的 短 时 功 率 、 短 时 过 零 率 各 有 何 特 点 ?清 音 段 的 能 量 一 般 比 浊 音 段 的 小 得 多 。浊
7、音 时 能 量 集 中 于 较 低 频 率 段 内 , 具 有 较 低 的 过 零 率 , 而 清 音 时 能 量 集 中 于 较 高频 率 段 内 , 具 有 较 高 的 过 零 率 。2. 如 何 利 用 短 时 功 率 和 短 时 过 零 率 这 两 个 参 数 对 语 音 信 号 进 行 浊 音 /清 音 的 分类 ? 发 浊 音 时 , 由 于 声 门 波 引 起 了 谱 的 高 频 跌 落 。 所 以 其 语 音 能 量 集 中 在 3kHz以 下 ;发 清 音 时 , 多 数 能 量 出 现 在 高 频 。 高 频 率 意 味 着 高 的 平 均 过 零 率 , 低 频 率 意
8、味 着 低 的平 均 过 零 率 , 一 般 可 认 为 浊 音 具 有 较 低 的 平 均 过 零 率 , 清 音 具 有 较 高 的 平 均 过 零 率 。3. 如 何 根 据 时 域 波 形 估 计 各 帧 元 音 的 基 音 周 期 ? 看 图 可 知 四 帧 语 音 的 周 期 均 为 0.01s, 第 一 帧 0100Hz有 10个 峰 值 点 , 基 频 约 为10Hz, 第 二 帧 0100Hz有 5个 峰 值 点 , 基 频 约 为 20Hz, 第 三 帧 0100Hz有 5个 峰 值 点 ,基 频 约 为 20Hz, 第 四 帧 0100Hz有 4个 峰 值 点 , 基 频
9、 约 为 25Hz。4. 如 何 根 据 基 于 DFT的 对 数 幅 度 谱 估 计 某 幀 浊 音 的 基 音 周 期 ?01172为 一 个 基 因 周 期 。5. 如 何 根 据 基 于 DFT的 对 数 幅 度 谱 , 估 计 出 共 振 峰 频 率 ?有 7个 峰 点 , 因 此 基 频 约 为 167。6. 时 域 对 语 音 信 号 进 行 加 窗 , 反 映 在 频 域 , 其 窗 谱 对 基 于 DFT的 对 数 幅 度 谱 有何 影 响 ? 如 何 估 计 出 窗 谱 的 主 瓣 宽 度 ?因 为 时 间 窗 幅 度 的 傅 立 叶 变 换 为 脉 冲 状 态 ,则 频
10、谱 偏 差 很 小 ,当 定 常 过 程 x(n)的平 均 值 为 零 且 N很 大 时 ETN()=f()(12) 所 以 加 窗 的 周 期 图 TN( )是 频 谱 密 度函 数 的 无 偏 估 计 。 固 有 TN()=1+()f()。如 果 原 始 信 号 的 频 谱 成 份 与 FFT 中 的 谱 线 完 全 一 致 , 这 种 情 况 下 采 样 数 据 的 长 度为 信 号 周 期 的 整 数 倍 , 频 谱 中 只 有 主 瓣 。7. 如 何 根 据 窄 带 、 宽 带 语 谱 图 , 提 取 出 语 音 的 基 音 和 共 振 峰 轨 迹 ?在 基 音 提 取 中 , 广
11、泛 采 用 语 音 波 形 或 误 差 信 号 波 形 的 低 通 滤 波 。提 取 共 振 峰 特 性 最 简 便 的 手 段 是 使 用 语 谱 仪 。 提 取 共 振 峰 还 有 倒 谱 法 、 LPC 分析 法 等 更 为 有 效 、 准 确 的 方 法 。( 做 完 试 验 后 , 记 住 要 回 答 这 些 问 题 )实验过程记录与结果分析1、进入 matlab1.1 在 Windows环 境 中 , 创 建 一 个 名 为 speech的 文 件 夹 , 存 放 语 音 数 据 和 与 实 验相 关 的 Matlab文 件 。 如 : E:speech。用 于 实 验 的 语 音
12、 数 据 ( .mat) 及 相 应 说 明 ( .txt) 包 括 :digits.mat % 英 文 数 字 “0” 到 “9” 的 发 音digits.txt gliss.mat % 两 个 包 含 /i/的 滑 音gliss.txt letters.mat % 英 文 字 母 表 中 26个 字 母 的 发 音letters.txt ma1.txt ma1-1.mat % 一 句 连 续 语 音ma1-2.mat % 一 句 连 续 语 音ma1-3.mat % 一 句 连 续 语 音ma1-4.mat % 一 句 连 续 语 音timit.txttimit1.mat % 一 句 连
13、续 语 音timit2.mat % 一 句 连 续 语 音timit3.mat % 一 句 连 续 语 音timit4.mat % 一 句 连 续 语 音vowels.mat % 元 音 /a/, /i/, /o/, /u/的 发 音vowels.txtwords.mat % 十 个 孤 立 字 的 发 音words.txt1.2 在 Windows 桌 面 上 , 双 击 Matlab 的 图 标 , 进 入 Matlab 的 工 作 环 境 。 在 命令 窗 口 提 示 符 后 , 键 入 cd E:speech 指 令 , 进 入 实 验 文 件 夹 路 径 。1.3 在 命 令 窗 口
14、 键 入 clear all 指 令 , 清 除 工 作 空 间 的 所 有 变 量 。2、加载语音数据,熟悉 matlab 命令2.1 加 载 “timit1.mat”语 音 数 据 , 命 令 为 :load timit12.2 用 命 令 “who”和 “whos”列 出 当 前 工 作 空 间 中 的 变 量 。 变 量 “timit1”会以 包 含 55911 个 元 素 的 矩 阵 ( 列 向 量 ) 形 式 出 现Your variables are:timit1 Name Size Bytes Class Attributestimit1 55911x1 447288 doub
15、le 2.3 利 用 命 令 “length”和 “size”查 看 语 音 信 号 timit1 的 长 度 和 维 数 :m = length(timit1)m,n = size(timit1)(粘贴实验结果)m =55911m =55911n =12.4 通 过 以 下 命 令 , 分 别 查 看 语 音 信 号 timit1 中 间 的 1 个 、 2 个 和 20 个 数 据 值 :timit1(5001)timit1(5001,5003)timit1(5001:5020)(粘贴实验结果)ans =-0.0646ans =-0.06460.0111ans =-0.06460.0307
16、0.0111-0.02000.20210.40120.1869-0.1756-0.19020.08230.23630.17120.0637-0.0209-0.0683-0.03940.00810.01050.03110.06962.5 Matlab 中 , 符 号 “”可 以 实 现 转 置 运 算 , 运 行 以 下 命 令 进 行 观 察 :size (timit1)(粘贴实验结果)ans =1 559112.6 使 用 函 数 max 和 min 可 以 分 别 得 到 信 号 的 最 大 值 和 最 小 值 :max(timit1)min(timit1)(粘贴实验结果)ans =1an
17、s =-0.80683、语音信号的时域分析3.1 使 用 以 下 命 令 , 画 出 语 音 信 号 timit1( 采 样 频 率 为 16kHz, 长 度 为 3.5 秒 )的 时 域 波 形 。plot (timit1)title (timit1)xlabel (Time Index,it n)ylabel (Amplitude)axis (0 length(timit1) -1 1)gridTime Index,n 1040 1 2 3 4 5Amplitude-1-0.8-0.6-0.4-0.200.20.40.60.81 timit13.2 分 别 画 出 一 帧 浊 音 和 一
18、帧 清 音 的 语 音 时 域 波 形 ( 采 样 频 率 为 16kHz, 帧 长 为25ms, 每 帧 有 400 个 样 点 ) 。subplot(211), plot(timit1(14501:14900) % /a/ in dark.subplot(212), plot(timit1(35501:35900) % /s/ in wash.0 50 100 150 200 250 300 350 400-1-0.500.510 50 100 150 200 250 300 350 400-0.1-0.0500.050.13.3 编 写 个 一 用 以 计 算 信 号 短 时 功 率 的
19、 函 数 “stpower.m”, 其 Matlab 代 码 如 下 :function Px=stpower (x, N)M = length (x);Px = zeros (M, 1);Px (N)=x (1:N)*x (1:N)/N;For (m = (N+1): M)Px (m) = Px (m-1)+ (x (m) 2-x (m-N) 2)/N;3.4 编 写 一 个 用 以 计 算 信 号 短 时 过 零 率 的 函 数 “stzerocross.m”, 其 Matlab 代 码如 下 :function Zx = stzerocross(x, N)M = length(x);Zx
20、 = zeros(M,1);Zx (N+1)=sum (abs (sign (x (2:N+1)sign (x (1:N) ) ) )/ (2*N);for (m= (N+2):M)Zx (m) = Zx (m-1) + (abs (sign (x (m) ) sign (x (m-1) ) ) abs(sign (x (m-N) ) sign (x (m-N-1 ) ) ) )/ (2*N);end3.5 加 载 “digits.mat”语 音 数 据 , 该 数 据 包 含 英 文 数 字 “0” 到 “9”的 发 音 。计 算 其 中 的 单 词 “four”的 短 时 功 率 和 过
21、零 率 ( 采 样 频 率 为 10kHz, 帧 长 为 30ms,每 帧 有 300 个 样 点 ) 。load digits;N = 300; x=digits.four1;Px = stpower (x,N);Zx = stzerocross (x,N);plot(Px*1e -5 Zx x/2000)0 1000 2000 3000 4000 5000 6000-0.4-0.200.20.40.60.83.6 加 载 “vowels.mat”语 音 数 据 , 该 数 据 包 含 元 音 /a/, /i/, /o/, /u/的 发 音 。 分 别画 出 一 帧 /a/、 一 帧 /i/
22、、 一 帧 /o/ 和 一 帧 /u/的 时 域 波 形 ( 采 样 频 率 为 10kHz, 帧 长 为30ms, 每 帧 有 300 个 样 点 ) 。load vowelssubplot(221)plot (vowels.a_1(2001:2300)subplot(222)plot (vowels.i_1(2001:2300)subplot(223)plot (vowels.o_1(2001:2300)subplot(224)plot (vowels.u_1(2001:2300)0 100 200 300-2000-1000010000 100 200 300-1000-50005001
23、0000 100 200 300-2000-10000100020000 100 200 300-2000-1000010003.7 编 写 一 个 利 用 短 时 功 率 和 短 时 过 零 率 这 两 个 参 数 对 语 音 信 号 进 行 浊 音 /清 音分 类 的 函 数 “voiunvoi.m”, 其 Matlab 代 码 如 下 :function voi = voiunvoi(x,N,Pth,Zth)% Short-time power Px and zero crossing Zx measures.Px = stpower(x,N);Zx = stzerocross(x,N)
24、;% Compare estimates with threshold values.voi = (PxPth*max(Px) % Shift the voi-flag N/2 samples to the left (middle sample in window).voi = voi(fix(N/2)+1:length(voi);voi(length(voi)*ones(fix(N/2),1);4、语音信号的频域分析4.1 加 载 “ma1_1”语 音 数 据 。 基 于 DFT 变 换 , 画 出 其 中 一 帧 数 据 ( 采 样 频 率 为8kHz, 帧 长 为 37.5ms, 每 帧 有 300 个 样 点 ) 的 频 域 波 形 ( 对 数 幅 度 谱 ) 。load ma1_1;x = ma1_1 (4161:4460); subplot(121), plot(x) N = 1024; k = 0:N/2-1;X = fftshift (fft (x.*hann (length (x),N);subplot(122), plot (k,20*log10 (abs(X(N/2:-1:1), axis (0 N/2-1 -inf inf )