DeepSpeech v1安装与训练

1 安装git-lfs

curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.rpm.sh | sudo bash
sudo apt-get install git-lfs

这一步不能漏了,不安装这一步后面git clone获取的deepspeech代码没有相应的语言模型。会出现如下的错误:

Loading the LM will be faster if you build a binary file.
Reading data/lm/lm.binary
----5---10---15---20---25---30---35---40---45---50---55---60---65---70---75---80---85---90---95--100
terminate called after throwing an instance of 'lm::FormatLoadException'
  what():  native_client/kenlm/lm/read_arpa.cc:65 in void lm::ReadARPACounts(util::FilePiece&, std::vector<long unsigned int>&) threw FormatLoadException.
first non-empty line was "version https://git-lfs.github.com/spec/v1" not \data\. Byte: 43
Aborted (core dumped)

2   获取代码

git clone https://github.com/mozilla/DeepSpeech

3 创建DeepSpeech虚拟环境

在创建虚拟环境时,你将创建包含 python3 二进制文件的目录以及运行deepspeech所需。 你可以使用任何你想要的目录。 出于文档的目的,我们将依赖 $HOME/tmp/deepspeech-venv。 你可以使用以下命令创建它:

$ virtualenv -p python3 $HOME/tmp/deepspeech-venv/

成功完成这里命令后,环境将准备就绪,可以激活。

每次需要使用DeepSpeech时,都必须激活 activate 负载这个虚拟环境。 这是用这个简单的命令完成的:

$ source $HOME/tmp/deepspeech-venv/bin/activate

注意,没在虚拟环境下运行会出现错误

4 安装 DeepSpeech python-绑定

设置并加载环境后,可以使用 pip3 在本地管理包。 重新安装 virtualenv 时,你必须安装DeepSpeech轮。 你可以查看 pip3 list的输出来检查它是否已经安装。 要执行安装,只需发出以下命令:

$ pip3 install deepspeech

如果已经安装,你还可以更新它:

$ pip3 install --upgrade deepspeech

另外,如果你在 Linux (查看发行说明以查找支持哪些 GPU) 上拥有支持的NVIDIA GPU,则可以按如下方式安装GPU特定软件包:

$ pip3 install deepspeech-gpu

或者按如下方式更新它:

$ pip3 install --upgrade deepspeech-gpu

在这两种情况下,它都应该负责安装所有必需的依赖项。 完成后,你就可以在命令行中使用 deepspeech 调用示例二进制文件了。注意:以下命令假设你已经下载了预训练过的模型。

deepspeech --model models/output_graph.pbmm --alphabet models/alphabet.txt --lm models/lm.binary --trie models/trie --audio my_audio_file.wav

 下载训练好的模型

wget https://github.com/mozilla/DeepSpeech/releases/download/v0.4.1/deepspeech-0.4.1-models.tar.gz
tar xvfz deepspeech-0.4.1-models.tar.gz

5 使用pip安装所需的依赖项:

cd DeepSpeech
pip3 install -r requirements.txt

您还需要安装ds_ctcdecoder Python软件包,该软件包是将声学模型的输出解码为文本所必需的包。 我们的CI基础结构中提供了二进制文件,您可以使用util / taskcluster.py来获取解码器包的URL。 当您传递decoder选项时,脚本会将URL打印到适用于您的平台和Python版本的相应解码器包:

pip3 install $(python3 util/taskcluster.py --decoder)

如果你有能力的( Nvidia,至少 8GB的硬盘) GPU,强烈建议你安装TensorFlow支持GPU支持。 培训可能比使用CPU要快得多。 要启用GPU支持,你可以执行以下操作:

pip3 uninstall tensorflow
pip3 install 'tensorflow-gpu==1.12.0'

6 运行训练代码

bash ./bin/run-ldc93s1.sh

为后文的测试训练一个pb模型,需要对run-ldc93s1.sh做出一定的的修改,在原文后加一行代码,设置pb模型保存文件夹,--export_dir /root/DeepSpeech/data/ldc93s1,得到output_graph.pb

Downloading and preprocessing LDC93S1 example data, saving in ./data/ldc93s1.
+ python3 -u bin/import_ldc93s1.py ./data/ldc93s1
No path "./data/ldc93s1" - creating ...
No archive "./data/ldc93s1/LDC93S1.wav" - downloading...
Progress |                                                                                                                                                                                                                      | N/A% completedNo archive "./data/ldc93s1/LDC93S1.txt" - downloading...
Progress |######################################################################################################################################################################################################################| 100% completed
Progress |######################################################################################################################################################################################################################| 100% completed
+ '[' -d '' ']'
++ python3 -c 'from xdg import BaseDirectory as xdg; print(xdg.save_data_path("deepspeech/ldc93s1"))'
+ checkpoint_dir=/root/.local/share/deepspeech/ldc93s1
+ python3 -u DeepSpeech.py --train_files data/ldc93s1/ldc93s1.csv --dev_files data/ldc93s1/ldc93s1.csv --test_files data/ldc93s1/ldc93s1.csv --train_batch_size 1 --dev_batch_size 1 --test_batch_size 1 --n_hidden 494 --epoch 75 --export_dir lmmodel --checkpoint_dir /root/.local/share/deepspeech/ldc93s1 --export_dir /tmp/train
Preprocessing ['data/ldc93s1/ldc93s1.csv']
Preprocessing done
Preprocessing ['data/ldc93s1/ldc93s1.csv']
Preprocessing done
W Parameter --validation_step needs to be >0 for early stopping to work
I STARTING Optimization
I Training epoch 0...
I Training of Epoch 0 - loss: 350.212463                                                                                                                                                                                                        
100% (1 of 1) |###########################################################################################################################################################################################| Elapsed Time: 0:00:00 Time:  0:00:00
I Training epoch 1...
I Training of Epoch 1 - loss: 185.314514                                                                                                                                                                                                        
100% (1 of 1) 
......
|###########################################################################################################################################################################################| Elapsed Time: 0:00:00 Time:  0:00:00
Test - WER: 0.000000, CER: 0.000000, loss: 2.879311
--------------------------------------------------------------------------------
WER: 0.000000, CER: 0.000000, loss: 2.879311
 - src: "she had your dark suit in greasy wash water all year"
 - res: "she had your dark suit in greasy wash water all year"
--------------------------------------------------------------------------------
I Exporting the model...
I Models exported at /tmp/train

7 测试模型

deepspeech --model data/ldc93s1/output_graph.pb --audio data/ldc93s1/LDC93S1.wav --alphabet data/alphabet.txt --lm data/lm/lm.binary --trie data/lm/trie

### 实时语音转文字模型概述 对于实时语音转文字的任务,Python 提供了多种强大的工具和库来支持这一需求。以下是几个常用的解决方案: #### 1. **DeepSpeech** Mozilla 开发的 DeepSpeech 是一种开源的语音识别引擎,基于 Baidu 的 Deep Speech 论文构建[^1]。它提供了高效的端到端语音转文字能力,并且可以通过 TensorFlow 或 PyTorch 进行训练和推理。 ```python import deepspeech model_file_path = 'deepspeech-0.9.3-models.pbmm' beam_width = 500 model = deepspeech.Model(model_file_path, beam_width) audio_file_path = 'test_audio.wav' with open(audio_file_path, 'rb') as audio_file: audio = audio_file.read() text = model.stt(audio) print(f"Transcribed text: {text}") ``` 此代码片段展示了如何加载预训练模型并将其应用于音频文件以获取转录文本。 #### 2. **Real-Time Voice Cloning** 另一个值得注意的项目是 CorentinJ 的 Real-Time-Voice-Cloning 工具箱[^2]。虽然该项目主要关注于声音克隆,但它也包含了用于语音处理的基础组件,可以作为更复杂系统的起点。为了使用该工具箱,需先设置 Python 3.7 环境并下载必要的预训练模型。 #### 3. **Vosk API** Vosk 是一个离线语音识别套件,专为实时应用设计。它的性能优越,适合嵌入式设备以及服务器环境下的部署。 ```python from vosk import Model, KaldiRecognizer, SetLogLevel import wave SetLogLevel(0) model = Model(lang="en-us") # 更改 lang 参数以适应其他语言 wf = wave.open('test.wav', "rb") rec = KaldiRecognizer(model, wf.getframerate()) while True: data = wf.readframes(4000) if len(data) == 0: break if rec.AcceptWaveform(data): result = rec.Result() print(result) wf.close() ``` 上述脚本说明了 Vosk 如何读取 WAV 文件并将语音转换成结构化的 JSON 输出[^4]。 #### 4. **Google Cloud Speech-to-Text** 尽管 Google Cloud Speech-to-Text 不完全是一个本地化方案,但在某些场景下可能更为适用,特别是当需要高精度而不在乎网络延迟的时候。它可以轻松集成进任何 Python 应用程序中。 ```python from google.cloud import speech_v1p1beta1 as speech client = speech.SpeechClient() config = speech.RecognitionConfig( encoding=speech.RecognitionConfig.AudioEncoding.LINEAR16, sample_rate_hertz=16000, language_code='en-US', enable_automatic_punctuation=True ) audio = speech.RecognitionAudio(uri="gs://bucket_name/audio_file.flac") response = client.recognize(config=config, audio=audio) for result in response.results: print("Transcript: {}".format(result.alternatives[0].transcript)) ``` 这段代码利用 Google Cloud SDK 来执行远程语音识别请求。 ### 性能对比选择建议 每种方法都有各自的优缺点: - 如果追求完全自主控制而不依赖外部服务,则应考虑像 DeepSpeech 和 Vosk 这样的选项。 - 对于更高的精确度或者多语种支持,在预算允许的情况下可以选择云服务商的产品如 Google Cloud Speech-to-Text。
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值