- 核心概念:AI收音机是什么,它如何工作。
- 准备工作:软硬件要求和环境配置。
- 实战步骤:编写代码,实现录音和识别。
- 功能增强:如何让它更智能,比如实时识别和翻译。
- 部署与封装:如何将你的AI收音机打包成一个可执行文件。
核心概念:AI收音机是什么?
传统收音机接收的是广播信号(如FM/AM),而我们的AI收音机接收的是音频流(来自麦克风、网络音频等),并通过语音识别模型将其转换成文字。

其基本工作流程如下:
音频输入 -> 录音 -> AI模型处理 -> 文字输出
我们选择的 Whisper 模型是OpenAI开源的一个强大的语音识别系统,它具有以下优点:
- 高准确率:在多种语言和口音下表现优异。
- 多语言支持:支持近百种语言的识别和翻译。
- 鲁棒性强:能有效识别背景噪音、口音和专业术语。
- 支持多种任务:不仅能转写,还能翻译成英文。
准备工作
1 硬件要求
- 一台电脑:Windows, macOS, 或 Linux 均可。
- 一个麦克风:电脑自带的即可,但外接质量好的麦克风效果会更好。
- 网络连接:首次下载Whisper模型需要联网,模型较大(约150MB - 3GB)。
2 软件要求
- Python 3.8+:如果你的电脑没有,请先从 Python官网 下载并安装。
- 代码编辑器:推荐使用 Visual Studio Code (VS Code),它对Python支持很好。
3 环境配置(关键步骤)
打开你的终端(Windows上是CMD或PowerShell,macOS上是Terminal),我们一步步来安装必要的库。
第1步:创建一个项目文件夹

mkdir ai_radio cd ai_radio
第2步:创建并激活虚拟环境(强烈推荐!) 虚拟环境可以隔离项目依赖,避免与其他Python项目冲突。
- Windows:
python -m venv venv venv\Scripts\activate
- macOS / Linux:
python3 -m venv venv source venv/bin/activate
激活后,你的终端提示符前会出现
(venv)。
第3步:安装Python库 在激活的虚拟环境中,运行以下命令安装所需库:
# 核心库:用于音频录制 pip install pyaudio # OpenAI的Whisper库 pip install openai-whisper # PyTorch:Whisper的底层依赖,选择适合你系统的CUDA版本(如果NVIDIA显卡)或CPU版本 # 如果你没有NVIDIA显卡,直接安装CPU版本即可 pip install torch torchaudio # 可选但推荐:用于显示进度条 pip install tqdm
安装问题排查:

pyaudio安装失败:pyaudio依赖一个叫PortAudio的库,你可能需要先手动安装它。- Windows: 去 这里 下载对应你Python版本的
.whl文件,然后用pip install 下载的文件名.whl来安装。 - macOS:
brew install portaudio - Linux (Ubuntu/Debian):
sudo apt-get install portaudio19-dev python3-pyaudio
- Windows: 去 这里 下载对应你Python版本的
实战步骤:编写你的第一个AI收音机
我们将创建一个简单的脚本,实现“录音10秒,然后识别并打印文字”的功能。
第1步:创建Python脚本
在 ai_radio 文件夹中,创建一个名为 simple_radio.py 的文件,然后用VS Code打开它。
第2步:编写代码
将下面的代码复制并粘贴到 simple_radio.py 文件中。
import whisper
import pyaudio
import wave
import tempfile
import os
# --- 1. 加载Whisper模型 ---
# "base" 是一个较小、较快的模型,适合快速测试。
# 你也可以选择 "tiny", "small", "medium", "large" (越大越准,越慢)
print("正在加载Whisper模型...")
model = whisper.load_model("base")
print("模型加载完成!")
# --- 2. 录音设置 ---
FORMAT = pyaudio.paInt16
CHANNELS = 1
RATE = 16000
CHUNK = 1024
RECORD_SECONDS = 10 # 录10秒
# --- 3. 开始录音 ---
print(f"准备录音,时长 {RECORD_SECONDS} 秒...")
audio = pyaudio.PyAudio()
# 创建一个临时文件来保存录音
temp_audio_file = tempfile.NamedTemporaryFile(suffix=".wav", delete=False)
filename = temp_audio_file.name
temp_audio_file.close()
stream = audio.open(format=FORMAT, channels=CHANNELS,
rate=RATE, input=True,
frames_per_buffer=CHUNK)
frames = []
for i in range(0, int(RATE / CHUNK * RECORD_SECONDS)):
data = stream.read(CHUNK)
frames.append(data)
print("录音结束!")
# --- 4. 保存录音文件 ---
stream.stop_stream()
stream.close()
audio.terminate()
waveFile = wave.open(filename, 'wb')
waveFile.setnchannels(CHANNELS)
waveFile.setsampwidth(audio.get_sample_size(FORMAT))
waveFile.setframerate(RATE)
waveFile.writeframes(b''.join(frames))
waveFile.close()
# --- 5. 使用Whisper进行识别 ---
print("正在使用AI识别语音,请稍候...")
result = model.transcribe(filename, language="zh") # "zh"代表中文,也可以用"en"代表英文
# --- 6. 输出结果 ---
print("\n--- 识别结果 ---")
print(result["text"])
# --- 7. 清理临时文件 ---
os.remove(filename)
print("\nAI收音机任务完成!")
第3步:运行脚本
在终端中,确保你在 ai_radio 文件夹且虚拟环境已激活,然后运行:
python simple_radio.py
你会看到什么?
- 首次运行时,它会从网络下载
base模型,这可能需要几分钟。 - 然后它会提示你“准备录音...”。
- 对着你的麦克风说一段话,持续10秒。
- 录音结束后,它会进行AI识别,最后在终端打印出你刚才说的话的文本。
恭喜!你已经成功制作了一个最基础的AI收音机!
功能增强:让它更智能
上面的例子是一次性录音,让我们改进它,实现实时录音和识别,并增加翻译功能。
创建新文件 enhanced_radio.py
import whisper
import pyaudio
import numpy as np
import torch
# --- 1. 加载模型 ---
# 使用一个更小更快的模型以实现实时效果
model = whisper.load_model("tiny") # 可以换成 "base"
# --- 2. 录音设置 ---
FORMAT = pyaudio.paInt16
CHANNELS = 1
RATE = 16000
CHUNK = 1024
# 设置一个较短的时间窗口,例如2秒
RECORD_SECONDS = 2
# --- 3. 初始化PyAudio ---
audio = pyaudio.PyAudio()
stream = audio.open(format=FORMAT, channels=CHANNELS,
rate=RATE, input=True,
frames_per_buffer=CHUNK)
print("AI实时收音机已启动!")
print("对着麦克风说话,系统会实时识别,按 Ctrl+C 停止。")
# --- 4. 实时处理循环 ---
try:
while True:
# 从流中读取数据
data = np.frombuffer(stream.read(CHUNK, exception_on_overflow=False), dtype=np.int16)
# 将数据转换为浮点数并归一化,这是Whisper模型期望的输入格式
audio_data = data.astype(np.float32) / 32768.0
# 使用Whisper进行识别
# language="zh" 指定识别语言为中文
# task="transcribe" 是默认的转写任务
result = model.transcribe(audio_data, language="zh")
# 打印识别结果
print(f"\r识别结果: {result['text']}", end="", flush=True)
except KeyboardInterrupt:
print("\n用户中断,正在停止...")
finally:
# --- 5. 清理资源 ---
print("\n停止录音。")
stream.stop_stream()
stream.close()
audio.terminate()
运行增强版:
python enhanced_radio.py
这个版本会持续监听麦克风,每2秒处理一次音频流并打印结果,你会发现它的响应速度很快,但准确率比一次性录音略低(因为上下文信息少)。
如何增加翻译功能?
在 transcribe 函数中,你可以设置 task="translate" 来将任何语言的语音直接翻译成英文。
修改 enhanced_radio.py 中的识别部分:
# ...
# task="translate" 将把识别到的中文(或其他语言)直接翻译成英文
result = model.transcribe(audio_data, task="translate", language="zh") # language在这里指定源语言
# 打印翻译结果
print(f"\r翻译结果: {result['text']}", end="", flush=True)
# ...
现在运行它,它就会把你说的中文实时翻译成英文并显示。
部署与封装:分享你的作品
如果你想让不懂编程的朋友也能使用你的AI收音机,可以把它打包成一个独立的 .exe 文件(Windows)或 .app 文件(macOS),我们使用 PyInstaller 来完成。
第1步:安装PyInstaller
pip install pyinstaller
第2步:打包
假设你想打包 enhanced_radio.py。
-
Windows:
pyinstaller --onefile --windowed enhanced_radio.py
--onefile: 将所有东西打包成一个单独的.exe文件。--windowed: 运行时不显示黑色的命令行窗口(适合图形界面应用),对于我们的控制台应用,可以不加这个参数。
-
macOS:
pyinstaller --onefile --windowed enhanced_radio.py
第3步:找到你的可执行文件
打包完成后,会生成几个文件夹,你的可执行文件在 dist 文件夹里。
- Windows:
dist\enhanced_radio.exe - macOS:
dist\enhanced_radio
注意:
- 首次运行生成的
.exe文件时,它仍然需要从网络下载Whisper模型,所以确保目标电脑有网络。 - 打包后的文件会比较大(因为包含了Python环境和模型),通常在100MB以上。
- 将这个
.exe文件分享给朋友,他们即使没有安装Python,也能直接运行!
你已经成功从零开始,制作并逐步优化了一个功能强大的AI收音机!
未来可以探索的方向:
- 图形用户界面:使用
PyQt或Tkinter为它创建一个带按钮和文本框的窗口,而不是在命令行里运行。 - 保存记录:将识别结果保存到文本文件或数据库中。
- 语音合成:将识别出的文字用AI再读出来,实现“你说一句,AI重复一句”的有趣功能。
- 集成到其他应用:将这个核心功能集成到你的其他项目中。
希望这份详细的教程能帮助你开启AI语音应用的开发之旅!
