---
description: Python | C/C++ | 语音识别
---

# Python和C++通用语音识别模型

它在不同音频的大型数据集上进行训练，也是一个多任务模型，可以执行多语言语音识别以及语音翻译和语言识别。

Transformer 序列到序列模型针对各种语音处理任务进行训练，包括多语言语音识别、语音翻译、口语识别和语音活动检测。 所有这些任务都联合表示为由解码器预测的一系列标记，允许单个模型替换传统语音处理管道的许多不同阶段。 多任务训练格式使用一组特殊标记作为任务说明符或分类目标。

### **Python中模型使用**

#### **设置**

#### **命令行应用**

#### **Python脚本中执行**

### **C++中模型使用**

#### **特点**

* 没有依赖项的普通 C/C++ 实现
* 通过 Arm Neon 和 Accelerate 框架优化
* AVX 内在函数支持 x86 架构
* 混合 F16 / F32 精度
* 低内存使用率
* 运行时零内存分配
* 在 CPU 上运行

#### **使用**

首先，下载一个转换为 ggml 格式的模型。例如：

```
bash ./models/download-ggml-model.sh base.en
```

现在构建 main 示例并转录一个音频文件，如下所示：

```
# build the main example
make

# transcribe an audio file
./main -f input.wav
```

要快速演示，只需运行 `make base.en`:

```
$ make base.en

cc  -I.              -O3 -std=c11   -pthread -DGGML_USE_ACCELERATE   -c ggml.c -o ggml.o
c++ -I. -I./examples -O3 -std=c++11 -pthread -c sper.cpp -o sper.o
c++ -I. -I./examples -O3 -std=c++11 -pthread examples/main/main.cpp ggml.o -o main  -framework Accelerate
./main -h

usage: ./main [options] file0.wav file1.wav ...

options:
  -h,       --help          [default] show this help message and exit
  -t N,     --threads N     [4      ] number of threads to use during computation
  -p N,     --processors N  [1      ] number of processors to use during computation
  -ot N,    --offset-t N    [0      ] time offset in milliseconds
  -on N,    --offset-n N    [0      ] segment index offset
  -d  N,    --duration N    [0      ] duration of audio to process in milliseconds
  -mc N,    --max-context N [-1     ] maximum number of text context tokens to store
  -ml N,    --max-len N     [0      ] maximum segment length in characters
  -wt N,    --word-thold N  [0.01   ] word timestamp probability threshold
  -su,      --speed-up      [false  ] speed up audio by x2 (reduced accuracy)
  -tr,      --translate     [false  ] translate from source language to english
  -otxt,    --output-txt    [false  ] output result in a text file
  -ovtt,    --output-vtt    [false  ] output result in a vtt file
  -osrt,    --output-srt    [false  ] output result in a srt file
  -owts,    --output-words  [false  ] output script for generating karaoke video
  -ps,      --print-special [false  ] print special tokens
  -pc,      --print-colors  [false  ] print colors
  -nt,      --no-timestamps [true   ] do not print timestamps
  -l LANG,  --language LANG [en     ] spoken language
  -m FNAME, --model FNAME   [models/ggml-base.en.bin] model path
  -f FNAME, --file FNAME    [       ] input WAV file path

bash ./models/download-ggml-model.sh base.en
Downloading ggml model base.en ...
ggml-base.en.bin               100%[========================>] 141.11M  6.34MB/s    in 24s
Done! Model 'base.en' saved in 'models/ggml-base.en.bin'
You can now use it like this:

  $ ./main -m models/ggml-base.en.bin -f samples/jfk.wav

===============================================
Running base.en on all samples in ./samples ...
===============================================

----------------------------------------------
[+] Running base.en on samples/jfk.wav ... (run 'ffplay samples/jfk.wav' to listen)
----------------------------------------------

```

#### **更多音频样本**

#### **实时音频输入示例**

这是对来自麦克风的音频执行实时推理的简单示例。流工具每半秒对音频进行一次采样，并连续运行转录。问题 #10 中提供了更多信息。

```
./stream -m ./models/ggml-base.en.bin -t 8 --step 500 --length 5000
```

#### **控制生成的文本段的长度**

#### **词级时间戳**

#### **卡拉OK式电影生成**

{% content-ref url="../zhi-dian-mi-jin-brief" %}
[zhi-dian-mi-jin-brief](../zhi-dian-mi-jin-brief)
{% endcontent-ref %}
