
Python构建AI语音与文本互转辅助工具的方法 原创
当今课堂的多元化程度远超以往,学生群体涵盖有不同需求的神经多样性学习者(Neurodiverse learners:指的是大脑神经发育模式与典型学生不同的学习者,包括自闭症、ADHD、阅读障碍等神经多样性学习者群体的统称)。尽管这类学习者具有独特优势,但传统教学方法难以满足其需求。
在此情况下,AI驱动的无障碍工具可发挥作用。从实时字幕到自适应阅读支持,AI正使课堂更具全纳性。
本文将涵盖以下内容:
- 阐释全纳教育的实际意义。
- 介绍AI对神经多样性学习者的支持方式。
- 提供两个 Python 实操演示:一是使用本地 Whisper 实现语音转文本(Speech-to-Text免费且无需 API 密钥)
二是利用 Hugging Face SpeechT5 完成文本转语音(Text-to-Speech) - 给出适用于 Windows 和 macOS/Linux 用户的现成项目结构、要求及故障排除提示。
目录
- 先决条件
- 缺失文件说明
- 全纳教育的概念
- 工具集:教师可即刻尝试的五类AI无障碍工具
- 平台差异:Windows与macOS/Linux设置
- 实践操作:基于Python构建简易无障碍工具包
- 快速设置指南
- 代码对课堂的影响
- 开发者使命:实现全纳教育
- 挑战与考量
- 展望未来
先决条件
开始操作前,需满足以下条件:
- 结论
- 安装 Python 3.8 及以上版本。Windows 用户若未安装,可从 python.org 下载最新版本;macOS 用户通常已预装 python3。
- 设置虚拟环境(venv),使用虚拟环境有助于保持环境的整洁性,建议采用。
- 安装 FFmpeg,该工具是 Whisper 读取音频文件的必要依赖。
- 若使用 Windows 系统,需安装 PowerShell;若使用 macOS/Linux 系统,则需安装终端。
- 具备运行Python脚本的基本能力。
提示:若对Python环境不熟悉,无需担忧,后续每个步骤均会提供相应的设置命令。
缺失文件说明
GitHub仓库中未包含部分文件,这是经过考量的有意安排。这些文件的生成或获取方式如下:一部分文件会在特定操作过程中自动生成,另一部分则需要在本地环境中进行创建或安装。
.venv/ →虚拟环境文件夹:每位读者需在本地自行创建该文件夹,创建方式如下:
python -m venv .venv
1.FFmpeg安装方法。
a.Windows:鉴于 FFmpeg 文件体积较大(约 90MB),项目文件中未包含该文件,用户需自行下载 FFmpeg 安装包进行安装。
b.macOS:用户可借助 Homebrew 包管理器,执行命令“brew install ffmpeg”完成 FFmpeg 的安装。
c.Linux:用户可使用系统的包管理器,通过执行“sudo apt install ffmpeg”命令来安装 FFmpeg。
(注:FFmpeg 是一款功能强大的跨平台开源多媒体处理工具,可用于音视频的录制、转换、编解码、剪辑及流媒体传输等多种操作。)
2.输出文件。
运行文本转语音脚本时会生成“output.wav”文件。该文件不在 GitHub 代码库中,而是在执行脚本时于本地机器上创建。
为保证代码库的整洁性,通过.gitignore 文件排除了以下文件:
# Ignore virtual environments
.venv/
env/
venv/
# Ignore binary files
ffmpeg.exe
*.dll
*.lib
# Ignore generated audio (but keep sample input)
*.wav
*.mp3
!lesson_recording.mp3
代码库涵盖了学习过程中所需的全部关键文件,具体如下:
- requirements.txt(详细内容见下文)
- transcribe.py 和 tts.py(“实践操作”部分将对其进行逐步讲解)
- requirements.txt:
openai-whisper
transformers
torch
soundfile
sentencepiece
Numpy
通过以上方式,项目所需的全部资源准备完毕。
全纳教育(Inclusive Education)的概念
全纳教育并非仅仅是把有不同需求的学生聚集在同一教室,其核心目标是营造一个能使每个学生都得以充分发展的学习环境。
常见的学习障碍类型如下:
- 阅读困难:如患有阅读障碍症的情况。
- 沟通难题:涉及言语或听力障碍问题。
- 感官负担过重或注意力难以集中:常见于自闭症、多动症患者。
- 记笔记和理解困难。
AI可通过提供字幕、朗读、自适应节奏以及替代性沟通工具等方式,帮助减少上述学习障碍。
工具集:教师可即刻尝试的五类AI无障碍工具
- 微软沉浸式阅读器:具备文本转语音、阅读引导和翻译功能。
- 谷歌实时转录:为言语或听力辅助提供实时字幕。
- Otter.ai:可实现自动记笔记和内容总结。
- Grammarly / Quillbot:辅助写作,增强文本的可读性与清晰度。
- Seeing AI(微软):为视障学习者描述文本和场景。
实际案例
患有阅读障碍症的学生可借助沉浸式阅读器,在听课本内容的同时对照文字阅读;有听力损失的学生则能利用实时转录功能跟上课堂讨论。这些技术应用上的小改变,为全纳教育带来了显著的积极效果。
平台差异:Windows与macOS/Linux设置
大多数代码在不同操作系统上的运行逻辑一致,但设置命令存在一定差异。
创建虚拟环境
若要在PowerShell中使用 Python 3.8 或更高版本创建并激活虚拟环境,可按以下步骤操作:
1.创建虚拟环境。
py -3.12 -m venv .venv
2.激活虚拟环境。
.\.venv\Scripts\Activate
激活虚拟环境后,PowerShell提示符会改变,表明已进入虚拟环境。这种设置方式有利于依赖项的管理,能够实现项目环境的相互隔离。
对于MacOS 用户,若需在 bash shell(这是一种常用的命令行解释器(shell),是 UNIX 和类 UNIX 系统(如 Linux、macOS)默认的 shell 之一,用于接收和执行用户输入的命令,是用户与操作系统内核交互的接口)中使用 Python 3 创建并激活虚拟环境,可按以下步骤操作:
1.创建虚拟环境。
python3 -m venv .venv
2.激活虚拟环境。
source .venv/bin/activate
激活后,bash 提示符会发生变化,以此表明已进入虚拟环境开展工作。该设置有助于依赖项的管理,可确保项目环境相互隔离。
Windows系统FFmpeg安装指引:
- 下载 FFmpeg 安装包:通过访问 FFmpeg 官方网站,获取适用于 Windows 系统的最新版本 FFmpeg 安装包。
- 解压下载的文件:安装包下载完成后,对其进行解压操作以提取其中的内容。解压后可得到多个文件,其中包含 ffmpeg.exe 可执行文件。
- 复制 ffmpeg.exe:对于使用 ffmpeg.exe 可执行文件,存在两种配置方式:
- 项目文件夹配置:将 ffmpeg.exe 直接复制到项目文件夹中。采用此方式,项目无需对系统设置进行修改即可访问 FFmpeg 功能。
- 系统路径添加:可将包含 ffmpeg.exe 的目录添加到系统的 PATH 环境变量中。完成该操作后,能够在任意命令提示符窗口中直接使用 FFmpeg,而无需指定其具体位置。
此外,包含所有必要文件及说明的完整项目文件夹,可从 GitHub 进行下载。文章末尾提供了 GitHub 存储库的链接。
MocOS系统FFmpeg安装指引:
若要在macOS系统上安装FFmpeg,可借助Homebrew这一广泛应用的 macOS 包管理器,具体操作步骤如下:
- 打开终端:可在“应用程序”目录下的“实用工具”文件夹中找到“终端”应用并打开。
- 安装 Homebrew(若未安装):将以下命令复制粘贴至终端,然后按下回车键,随后依照屏幕提示完成操作。/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
- 安装 FFmpeg:待Homebrew安装完毕,在终端中执行相应命令以完成 FFmpeg 的安装。
brew install ffmpeg
执行该命令后,系统会自动下载并安装 FFmpeg,安装完成后,FFmpeg 即可在系统中正常使用。
Linux系统(Debian/Ubuntu)FFmpeg安装指引:
在基于 Debian 的系统(例如 Ubuntu)上安装 FFmpeg,可使用 APT 包管理器,具体操作如下:
1.打开终端:一般可在系统的应用程序菜单中找到 “终端” 并打开。
2.更新软件包列表:在安装新软件前,建议更新软件包列表。在终端中运行以下命令:
sudo apt update
3.安装 FFmpeg:软件包列表更新完成后,通过运行以下命令安装 FFmpeg:
sudo apt install ffmpeg
上述步骤完成后,FFmpeg 将在 macOS 或 Linux 系统上完成安装并可随时使用。
运行 Python 脚本:
- Windows系统:python script.py 或者py script.py
- macOS/Linux系统:python3 script.py
在后续相关步骤中,涉及不同系统操作差异的部分将以“macOS/Linux说明”进行标注,以便用户能依据自身系统顺利完成操作。
实践操作:基于Python构建简易无障碍工具包
搭建以下两个小型演示项目:
- 基于Whisper模型的语音转文本项目(本地运行,免费)
- 基于Hugging Face SpeechT5模型的文本转语音项目
(1)基于 Whisper模型的语音转文本项目(本地运行,免费)
项目搭建内容:
编写一个Python脚本,读取一段简短的 MP3 音频文件,并在终端输出其转录文本。
选择Whisper的原因
Whisper 是一个性能稳健的开源语音识别(Speech-to-Text, STT)模型。其本地部署版本适合初学者,无需申请API密钥,无调用配额限制,初次安装完成后可离线运行,保障数据隐私且提升使用灵活性。
Whisper安装方法(使用PowerShell):
# Activate your virtual environment
# Example: .\venv\Scripts\Activate
# Install the openai-whisper package
pip install openai-whisper
# Check if FFmpeg is available
ffmpeg -version
# If FFmpeg is not available, download and install it, then add it to PATH or place ffmpeg.exe next to your script# Example: Move ffmpeg.exe to the script directory or update PATH environment variable
在运行 Whisper 之前,应能在此处看到一个版本字符串。
注意:MacOS 用户可在其终端中使用与上述相同的代码片段。
若尚未安装 FFmpeg,可使用以下命令进行安装:
macOS 系统:
brew install ffmpeg
Linux( Ubuntu/Debian)系统:
sudo apt install ffmpeg
创建transcribe.py:
import whisper
# Load the Whisper model
model = whisper.load_model("base") # Use "tiny" or "small" for faster speed
# Transcribe the audio file
result = model.transcribe("lesson_recording.mp3", fp16=False)
# Print the transcriptprint("Transcript:", result["text"])
代码的工作机制如下:
- whisper.load_model("base"):首次执行该代码时,系统会下载并加载指定的模型,后续运行会对该模型进行缓存处理。
- model.transcribe(...):此函数承担音频解码、语言检测以及文本推理的任务。
- fp16=False:该参数用于避免使用半精度 GPU 运算,以此保证代码能够在 CPU 环境下正常运行。
- result["text"]:最终生成的转录文本字符串。
运行:
python transcribe.py
预期输出:
语音转文本成功:Whisper将输出从lesson_recording.mp3中识别出的句子。
若要在macOS或Linux系统上运行transcribe.py脚本,可在终端中使用以下命令:
python3 transcribe.py
常见问题及解决方法:
- 转录时出现 FileNotFoundError:此问题表明未找到 FFmpeg。需安装 FFmpeg,并通过 ffmpeg -version 命令确认安装情况。
- 在CPU上运行速度极慢:可切换为tiny或small模型,使用 whisper.load_model("small") 进行切换。
(2)基于Hugging Face SpeechT5模型的文本转语音项目
项目搭建内容:
编写一个Python脚本,该脚本能够将一段简短字符串转换为语音,并保存为名为output.wav的WAV文件。
选择 SpeechT5 的原因
SpeechT5 是一款被广泛应用的开源模型,具备在 CPU 上运行的能力,易于进行演示,且使用过程中无需 API 密钥。
在(PowerShell)Windows 系统上安装所需软件包:
# Activate your virtual environment
# Example: .\venv\Scripts\Activate
# Install the required packages
pip install transformers torch soundfile sentencepiece
注意:Mac OS 用户可以在其终端中使用与上述相同的代码片段。
创建tts.py:
from transformers import SpeechT5Processor, SpeechT5ForTextToSpeech, SpeechT5HifiGan
import soundfile as sf
import torch
import numpy as np
# Load models
processor = SpeechT5Processor.from_pretrained("microsoft/speecht5_tts")
model = SpeechT5ForTextToSpeech.from_pretrained("microsoft/speecht5_tts")
vocoder = SpeechT5HifiGan.from_pretrained("microsoft/speecht5_hifigan")
# Speaker embedding (fixed random seed for a consistent synthetic voice)
g = torch.Generator().manual_seed(42)
speaker_embeddings = torch.randn((1, 512), generator=g)
# Text to synthesize
text = "Welcome to inclusive education with AI."
inputs = processor(text=text, return_tensors="pt")
# Generate speech
with torch.no_grad():
speech = model.generate_speech(inputs["input_ids"], speaker_embeddings, vocoder=vocoder)
# Save to WAV
sf.write("output.wav", speech.numpy(), samplerate=16000)
print("✅ Audio saved as output.wav")
预期输出:
文本转语音操作完成。SpeechT5 已生成音频,并将其保存为 output.wav 文件。
代码的工作机制如下:
- SpeechT5Processor:该组件负责为模型准备输入文本。
- SpeechT5ForTextToSpeech:此模块用于生成梅尔频谱图(mel-spectrogram),该频谱图包含语音内容信息。
- SpeechT5HifiGan:作为一种声码器,其作用是将频谱图转换为可播放的波形。
- speaker_embedding:这是一个 512 维的向量,代表着一种特定的“声音”。对其进行设定后,每次运行程序时都能产生一致的合成声音。
注意:若希望每次重新打开项目时都使用相同的声音,需使用以下代码片段保存一次性嵌入:
import numpy as np
import torch
# Save the speaker embeddings
np.save("speaker_emb.npy", speaker_embeddings.numpy())
# Later, load the speaker embeddings
speaker_embeddings = torch.tensor(np.load("speaker_emb.npy"))
运行:
python tts.py
注意:在 MacOS/Linux 系统中,使用 python3 tts.py 命令来运行与上述相同的代码。
预期结果:
- 终端显示:✅ Audio saved as output.wav(音频已保存为 output.wav)
- 文件夹中生成一个新文件:output.wav
常见问题及解决方法:
- ImportError: sentencepiece 未找到 → 执行 pip install sentencepiece 进行安装。
- Windows 上的 Torch 安装问题 →
# Activate your virtual environment
# Example: .\venv\Scripts\Activate
# Install the torch package using the specified index URL for CPU
pip install torch --index-url https://download.pytorch.org/whl/cpu
注意:首次运行时通常速度较慢,这是因为模型可能仍在下载过程中,属于正常现象。
(3)可选:通过 OpenAI API使用Whisper
功能:
无需在本地运行 Whisper,可直接调用 OpenAI 的 Whisper API(whisper - 1)。将音频文件上传至 OpenAI 服务器,服务器完成转录后,会将文本返回。
使用 API 的原因:
- 无需在本地安装或运行 Whisper 模型,可节省磁盘空间和设置时间。
- 借助 OpenAI 的基础设施运行,若本地电脑性能较差,使用该 API 进行转录速度会更快。
- 若已在课堂或应用程序中使用 OpenAI 服务,调用此API是不错的选择。
注意事项:
- 需要 API 密钥。
- 需要启用计费功能,且免费试用额度通常较小。
- 需要网络连接,这与本地 Whisper 演示有所不同。
获取 API 密钥的方法:
- 访问 OpenAI 的 API 密钥页面。
- 使用 OpenAI 账户登录,若没有则需创建一个。
- 点击 “Create new secret key”(创建新的密钥)。
- 复制生成的密钥,其格式类似 sk - xxxxxxxx.... ,需当作密码一样妥善保管,切勿公开分享,也不要推送到 GitHub 上。
步骤 1:设置 API 密钥
在 PowerShell(仅当前会话)中:
# Set the OpenAI API key in the environment variable
$env:OPENAI_API_KEY="your_api_key_here"
或者,可在 PowerShell 中通过setx命令永久设置环境变量,具体操作如下:
setx OPENAI_API_KEY "your_api_key_here"
此命令会将 OPENAI_API_KEY 环境变量设置为指定的值。需注意,应把 “your_api_key_here” 替换为实际的 API 密钥。该更改会在未来的 PowerShell 会话中生效,但可能需要重启当前会话或开启新会话,才能使更改生效。
验证环境变量已设置:
若要在 PowerShell 中查看环境变量的值,可使用 echo 命令,具体操作如下:
echo $env:OPENAI_API_KEY
该命令会在 PowerShell 会话中显示 OPENAI_API_KEY 环境变量的当前值。若该变量已完成设置,将打印出具体值;若未设置,将不返回任何内容或显示为空行。
步骤 2:安装 OpenAI Python 客户端
若要在 PowerShell 中通过 pip 安装 OpenAI Python 客户端,可使用以下命令:
pip install openai
执行此命令,系统将下载并安装 OpenAI 包,安装完成后,便能够在 Python 项目中与 OpenAI 的 API 进行交互。在运行该命令前,请确保系统已安装 Python 和 pip。
步骤3:创建transcribe_api.py
from openai import OpenAI
# Initialize the OpenAI client (reads API key from environment) client = OpenAI()
# Open the audio file and create a transcription
with open("lesson_recording.mp3", "rb") as f: transcript = client.audio.transcriptions.create( model="whisper-1", file=f
)
# Print the transcript
print("Transcript:", transcript.text)
步骤4:运行
python transcribe_api.py
预期输出:
Transcript: Welcome to inclusive education with AI.
常见问题及解决方法:
- 错误:insufficient_quota:此错误表明已用完免费额度,若需继续使用,需添加付费方式。
- 上传缓慢:若音频文件较大,可先对其进行压缩,例如将 WAV 格式转换为 MP3 格式。
- 密钥未找到:需仔细检查终端会话中是否设置了 $env:OPENAI_API_KEY。
本地 Whisper 与 API Whisper 的选择探讨
Feature | Local Whisper (on your machine) | OpenAI Whisper API (cloud) |
Setup | Needs Python packages + FFmpeg | Just install openai client + set API key |
Hardware | Runs on your CPU (slower) or GPU (faster) | Runs on OpenAI’s servers (no local compute needed) |
Cost | ✅ Free after initial download | Pay per minute of audio (after free trial quota) |
Internet required | ❌ No (fully offline once installed) | Yes (uploads audio to OpenAI servers) |
Accuracy | Very good - depends on model size (tiny → large) | Consistently strong - optimized by OpenAI |
Speed | Slower on CPU, faster with GPU | Fast (uses OpenAI’s infrastructure) |
Privacy | Audio never leaves your machine | Audio is sent to OpenAI (data handling per policy) |
一般而言,可参考以下原则进行选择:
- 若需要免费的离线转录功能,或者正在处理敏感数据,建议使用本地版 Whisper。
- 若更注重便捷性,不介意付费使用,且期望无需进行本地设置即可快速完成转录,那么 API 版 Whisper 更为合适。
快速设置备忘单
Task | Windows (PowerShell) | macOS / Linux (Terminal) |
Create venv | py -3.12 -m venv .venv | python3 -m venv .venv |
Activate venv | .\.venv\Scripts\Activate | source .venv/bin/activate |
Install Whisper | pip install openai-whisper | pip install openai-whisper |
Install FFmpeg | Download build → unzip → add to PATH or copy ffmpeg.exe | brew install ffmpeg (macOS) sudo apt install ffmpeg (Linux) |
Run STT script | python transcribe.py | python3 transcribe.py |
Install TTS deps | pip install transformers torch soundfile sentencepiece | pip install transformers torch soundfile sentencepiece |
Run TTS script | python tts.py | python3 tts.py |
Install OpenAI client (API) | pip install openai | pip install openai |
Run API script | python transcribe_api.py | python3 transcribe_api.py |
针对 MacOS M1/M2 用户的专业建议:若需实现 Metal GPU 加速,可能需要安装特定的 PyTorch 版本。请查阅 PyTorch 安装指南,获取适配的安装包。
代码对课堂的影响
无论选用本地的 Whisper、云 API 或是 SpeechT5 来实现文本转语音,此时开发者都已经拥有了一个可用的原型,该原型具备以下功能:
- 将口语授课内容转换为文本。
- 为偏好听觉输入的学生朗读文本。这构成了技术基础,但关键问题在于:这些基础功能如何在真实课堂场景下为教师和学生提供支持?
开发者使命:实现全纳教育
尝试将两个代码片段整合为一个简单的课堂辅助应用程序,该程序需具备以下能力:
- 实时为教师的话语添加字幕。
- 应要求大声朗读文本记录或课本段落。
之后可思考进一步的扩展方向:
- 增加用于非语言交流的符号识别功能。
- 为多元化课堂添加多语言翻译功能。
- 为网络连接不佳的学校添加离线支持。
利用现有的开源AI工具,这些设想是可以实现的。
挑战与考量
为全纳教育进行开发,不仅仅是代码层面的问题,还需应对一些重要挑战:
- 隐私保护:必须保护学生数据,尤其是涉及录音的数据。
- 成本控制:解决方案需对不同规模的学校具有合理的价格和可扩展性。
- 教师培训:教育工作者需要得到支持,以便自信地使用这些工具。
- 平衡把握:AI应辅助教师,不能取代学习过程中关键的人文因素。
展望未来
全纳教育的未来可能涉及多模态AI,包括结合语音、手势、符号甚至情感识别的系统。未来甚至可能出现脑机接口和可穿戴设备,助力目前被排斥在外的学习者实现无缝交流。
有一点很明确:当教师、开发者和神经多样性学习者共同设计解决方案时,全纳教育才能发挥最大效能。
结论
AI并非要取代教师,而是助力教师惠及每一位学生。通过采用AI驱动的无障碍工具,课堂能够转变为让神经多样性学习者茁壮成长的空间。
行动呼吁:
- 教师:可以在一堂课中尝试使用一款相关工具。
- 开发者:可以利用上述代码片段制作自己的全纳课堂工具原型。
- 政策制定者:可支持将无障碍性作为教育核心的倡议。
全纳教育不再是梦想,正逐步成为现实。审慎使用AI,全纳教育有望成为新常态。
译者介绍
刘涛,51CTO社区编辑,某大型央企系统上线检测管控负责人。
原文标题:How to Build AI Speech-to-Text and Text-to-Speech Accessibility Tools with Python,作者:OMOTAYO OMOYEMI
