Python Ai语音识别教程

发布于:2025-07-04 ⋅ 阅读:(19) ⋅ 点赞:(0)

语音识别是将人类语音转换为文本的技术,在现代应用中非常有用。本教程将介绍如何使用Python实现基本的AI语音识别功能。

一、文字转语音

#文字转语音
#安装第三方库 pip install pyttsx3
#导包 : import pyttsx3

import pyttsx3

#创建语音引擎
a1 = pyttsx3.init()

# #转换为语音
# a1.say ('大家好')

#保存音频到本地
a1.save_to_file(text='大家好', filename='1.mp3')

#执行语音(播放)
a1.runAndWait()

二、文本转语音

#文本转语音

import pyttsx3

a1 = pyttsx3.init()  # 使用 init() 来初始化引擎

# 获取指定文本内容转换语音
with open('1.txt', 'r', encoding='utf-8') as f:
    a2 = f.read()

a1.say(a2)   #播放
#a1.save_to_file(a2, filename='3.mp3') #保存本地
#a1.save_to_file(a2, filename=r"D:\桌面\6\2.mp3")#指定目录保存
a1.runAndWait()

三、设置语速、音量

# 设置语速、音量

import pyttsx3

a1 = pyttsx3.init()

# 设置语速(默认200)
a1.setProperty('rate', 200)
# 设置音量(1.0)
a1.setProperty('volume', 1)

#a1.say("你好") #播放
a1.save_to_file("你好", '4.mp3') #保存本地
a1.runAndWait()

四、语音转文字

语音模型下载网站:VOSK 模型

# 语音转文字/语音识别
# 安装三方库(阿里云源):pip install vosk -i https://mirrors.aliyun.com/pypi/simple/
# 检查安装版本命令pip show vosk
# 导包:from vosk import Model, KaldiRecognizer
# 导包:import wave
# 导包:import json
# 语音识别模型下载:https://alphacephei.com/vosk/models

from vosk import Model, KaldiRecognizer
import wave
import json

# 加载语音模型'zh-2'为下载模型
a1 = Model('zh-2')
# 打开音频文件
a2 = wave.open('1.mp3')
# 创建语音识别器  KaldiRecognizer(模型对象, 采样率16000)
a3 = KaldiRecognizer(a1, 16000)
print('开始识别')
while True:
    # 每次读取音频文件多少帧(1秒=16000帧)
    a4 = a2.readframes(4000)
    # 如果读取不到数据就退出循环
    if not a4:
        break
    # 传入读取数据进行识别
    a3.AcceptWaveform(a4)
# 识别器对象.FinalResult() 返回的是所有识别结果(json格式)
a5 = json.loads(a3.FinalResult())['text'].replace(' ', '')
print(a5)

五、实时语音识别为文字

# 实时语音识别
# 安装三方库(阿里源):pip install pyaudio -i https://mirrors.aliyun.com/pypi/simple/ (处理麦克风相关组件)
# 检查pyaudio是否安装成功
# python -c "import pyaudio; print('PyAudio 已安装,版本:', pyaudio.__version__)"
# 导包:import pyaudio
# frames_per_buffer

import pyaudio
from vosk import Model, KaldiRecognizer
import json

# 加载模型
a1 = Model('zh-2')
# 创建麦克风对象
p = pyaudio.PyAudio()
# 接收麦克风
a2 = p.open(
    # 16位深度音频数据
    format=pyaudio.paInt16,
    # 声道,单声道
    channels=1,
    # 采样率
    rate=16000,
    # 从麦克风获取数据
    input=True,
    # 每次读取数据块大小
    frames_per_buffer=4000
)
# 创建语音识别器
a3 = KaldiRecognizer(a1, 16000)
print('开始实时识别')

while True:
    # 从麦克风读取数据
    a4 = a2.read(4000)
    # 如果读取到数据
    if a3.AcceptWaveform(a4):
        # 实时输出识别结果
        a5 = a3.Result()
        a6 = json.loads(a5)['text'].replace(' ', '')
        print(a6)

网站公告

今日签到

点亮在社区的每一天
去签到