Spotify 转录:
AI 生成的字幕和播客分段章节。
✨ 主要功能
- 转录: 语音识别将语音转换为文本和时间戳。
- 搜索: 搜索转录文本并跳转到对话的特定部分。
- 章节: 自动按主题将节目分为多个章节。
- 字幕: 让有听力障碍的人也能访问播客。
📖 项目介绍
这个项目是我之前两个项目结合并持续开发的结果:
- Spotify 话题: 2020年夏天,我参加了Spotify的夏季黑客马拉松,并开发了一个工具,可以让你快进到讨论某些话题的时间戳。
- Spotify 字幕: 在2022年,我继续尝试构建基于一个有4500多个赞的功能想法的播客字幕。
2023年,在ChatGPT热潮中,我受到了启发,将之前的两个项目合并为一个播客播放器,并通过使用Open AI的API进行改进。
附注:Spotify后来发布了一个类似的播客字幕和章节解决方案,详情见这里。
⚙️ 使用技术
本项目使用的技术如表格所示:
技术 | 用途 |
---|---|
React | 前端框架 |
Tailwind | CSS 样式库 |
Python | 处理转录逻辑的后端 |
Flask | 连接 Python 后端和 React 前端 |
Spotify API | 获取播客剧集信息 |
Google Speech Recognition API | 将语音转换为文本,即转录播客 |
Open AI 的 GPT 3.5 API | 根据转录将其分段为章节 |
我想学习如何将 React 前端连接到 Python 后端,所以我用这个项目作为学习机会。结果,我通过在 Python 后端构建自己的 API 来处理转录,而不是在前端调用即插即用的 API,从而进行了一些过度设计。
具体来说,前端调用 Spotify API 获取请求播客的 URL。该 URL 作为请求发送到后端,后端将播客下载为 mp3 以进行处理。
处理 mp3 是因为我需要为每个句子获取时间戳,以便在正确的时间显示在字幕中。我通过监听长度超过500毫秒的静默(< 14 分贝)来识别转录中的句子。当检测到静默时,我将原始音频文件拆分为一组较小的音频文件,每个句子一个。通过这种方式,我可以通过查看每个较小音频文件的长度来计算每个句子的开始和结束时间,见下图。
所有音频文件现在发送到 Google 的语音识别 API 并返回转录的音频字符串。转录文本现在被发送回前端,前端再请求 Open AI 的 API 来分段转录并识别潜在主题,以便将剧集分为不同章节。
🚫 限制
Spotify 的 API 不允许你下载完整的播客剧集,只能下载30秒预览。这使得该应用程序的使用非常有限,因此只是一个概念验证。
🚀 入门
步骤1: 注册 API 密钥
步骤2: 添加 API 密钥到 .env 文件
在根目录创建一个 .env 文件并添加你的 API 密钥:
REACT_APP_SPOTIFY_CLIENT_ID=YOUR_SPOTIFY_CLIENT_ID_GOES_HERE
REACT_APP_OPEN_AI_KEY=YOUR_OPEN_AI_KEY_GOES_HERE
步骤3: 运行项目
使用以下命令运行项目。在一个终端启动前端,在另一个终端启动后端。
后端
export FLASK_APP=backend
export FLASK_DEBUG=1
flask run
前端
cd frontend
npm start
🎞️ 演示
观看项目的1分钟演示这里。
📸 截图
带有 Spotify 认证的主页
发现页
加载屏幕
剧集屏幕
剧集屏幕
全屏字幕
剧集的章节概览
按章节划分的音频播放器
搜索转录