●目 錄 章 語音識別技術 1 1.1 總體結構 1 1.2 Linux基礎 2 1.3 安裝Micro編輯器 4 1.4 安裝Kaldi 5 1.5 yesno例子 6 1.5.1 數據準備 7 1.5.2 詞典準備 8 1.6 構建一個簡單的ASR 12 1.7 Voxforge例子 21 1.8 數據準備 23 1.9 加權有限狀態轉換 34 1.9.1 FSA 35 1.9.2 FST 35 1.9.3 WFST 37 1.9.4 Kaldi對OpenFst的改進 38 1.10 語音識別語料庫 39 1.10.1 TIMIT語料庫 39 1.10.2 LibriSpeech語料庫 40 1.10.3 中文語料庫 40 1.11 Linux shell腳本基礎 40 1.11.1 Bash 41 1.11.2 AWK 44 第2章 C#開發語音識別 46 2.1 準備開發環境 46 2.2 計算卷積 47 2.3 記錄語音 48 2.4 讀入語音信號 52 2.5 離散傅裡葉變換 53 2.6 移除靜音 54 第3章 Perl開發語音識別 58 3.1 變量 58 3.1.1 數字 58 3.1.2 字符串 59 3.1.3 數組 60 3.1.4 散列表 60 3.2 多維數組 62 3.3 常量 62 3.4 操作符 63 3.5 控制流 66 3.6 文件與目錄 67 3.7 例程 68 3.8 執行命令 69 3.9 正則表達式 69 3.9.1 基本類型 69 3.9.2 正則表達式模式 70 3.10 命令行參數 72 第4章 Python開發語音識別 73 4.1 Windows操作繫統下安裝Python 73 4.2 Linux操作繫統下安裝Python 75 4.3 選擇版本 76 4.4 開發環境 76 4.5 注釋 77 4.6 變量 77 4.6.1 數值 77 4.6.2 字符串 79 4.7 數組 80 4.8 列表 80 4組 80 4.10 字典 81 4.11 控制流 81 4.11.1 條件判斷 81 4.11.2 循環 82 4.12 模塊 83 4.13 函數 84 4.14 讀寫文件 86 4.15 面向對像編程 87 4.16 命令行參數 88 4.17 數據庫 90 4.18 日志記錄 90 4.19 異常處理 92 4.20 測試 92 4.21 語音活動檢測 93 4.22 使用numpy 93 第5章 Java開發語音識別 94 5.1 實現卷積 95 5.2 KaldiJava 96 5.2.1 使用Ant 97 5.2.2 使用Maven 99 5.2.3 使用Gradle 100 5.2.4 概率分布函數 102 5.3 TensorFlow的Java接口 104 5.3.1 在Windows操作繫統下使用TensorFlow 104 5.3.2 在Linux操作繫統下使用TensorFlow 106 第6章 語音信號處理 109 6.1 使用FFmpeg 109 6.2 標注語音 110 6.3 時間序列 112 6.4 端點檢測 113 6.5 動態時間規整 114 6.6 傅裡葉變換 117 6.6.1 離散傅裡葉變換 117 6.6.2 快速傅裡葉變換 120 6.7 MFCC特征 124 6.8 說話者識別 125 6.9 解碼 125 第7章 深度學習 132 7.1 神經網絡基礎 132 7.1.1 實現多層感知器 135 7.1.2 計算過程 143 7.2 卷積神經網絡 150 7.3 搭建深度學習開發環境 156 7.3.1 使用Cygwin模擬環境 156 7.3.2 使用CMake 157 7.3.3 使用Keras 158 7.3.4 安裝TensorFlow 161 7.3.5 安裝TensorFlow的Docker容器 162 7.3.6 使用TensorFlow 164 7.3.7 一維卷積 208 7.3.8 二維卷積 210 7.3.9 擴張卷積 213 7.3.10 TensorFlow實現簡單的語音識別 214 7.4 nnet3實現代碼 216 7.4.1 數據類型 217 7.4.2 基本數據結構 219 7.5 編譯Kaldi 230 7.6 端到端深度學習 232 7.7 Dropout解決過度擬合問題 232 7.8 矩陣運算 235 第8章 語言模型 238 8.1 概率語言模型 238 8.1.模型 240 8.1.2 數據基礎 240 8.1.3 模型 249 8.1.詞典 251 8.1.5 完全二叉樹數組 257 8.1.詞典 261 8.1.模型 262 8.1.8 生成語言模型 264 8.1.9 評估語言模型 265 8.1.10 平滑算法 266 8.2 KenLM語言模型工具包 271 8.3 ARPA文件格式 275 8.4 依存語言模型 278
內容簡介
語音識別已經逐漸進入人們的日常生活。語音識別技術是涉及語言、計算機、數學等領域的交叉學科。《深度學習:語音識別技術實踐》介紹了包括C#、Perl、Python、Java在內的多種編程語言實踐,開源語音識別工具包Kaldi的使用與代碼分析,深度學習的開發環境搭建,卷積神經網絡,以及語音識別中常見的語言模型模型和依存模型等,讓讀者快速了解語音識別基礎,掌握開發語音識別程序的算法。 《深度學習:語音識別技術實踐》從語音識別的基礎開始講起,並輔以翔實的案例,既適合需要具體實現語音識別的程序員使用,也適合有一定機器學習或語音識別基礎的學生、研究者或從業者閱讀。
前 言 作為人工智能技術的重要組成部分,語音識別旨在研究計算機如何聽懂人的講話。來源於人工神經網絡的深度學習促進了語音識別技術的發展。本書從使用開源的語音識別構建繫統Kaldi開始講起,引導讀者親自實現語音識別繫統,使用了C#、Perl、Python、Java等多種編程工具。章介紹語音識別的基本原理和Kaldi的基本使用方法,以及使用Kaldi開發語音識別繫統應用到的Linux shell腳本基礎;第2章介紹使用C#開發語音識別繫統;第3章介紹Perl語言開發基礎;第4章介紹開發語音識別繫統所需要的Python基礎;第5章介紹使用Java開發語音識別繫統;第6章介紹傅裡葉變換、MFCC特征等常用的語音信號處理方法;第7章介紹基本的神經網絡和深度學習方法及訓練神經網絡的反向傳播方法;第8章介紹語音識別解碼階段用到的語言模型,以及語言模型工具包——Ken......
"