使用 Raspberry Pi 驱动的旋转电话热线进行 ChatGPT 复古

发布时间:2025年3月31日    来源:szf
使用 Raspberry Pi 驱动的旋转电话热线进行 ChatGPT 复古

快速阅读: 《XDA-开发人员》消息,基于MIT许可证的开源项目PolluxLabs推出一款基于ChatGPT的转盘电话系统,由弗雷德里克·库姆巴尔茨基开发。该系统通过模拟传统拨号方式与AI交互,支持语音输入和输出,适用于复古科技爱好者。

基于ChatGPT的转盘电话系统
—————————————————————-

https://en.polluxlabs.net
MIT许可证

版权所有 © 2025年 弗雷德里克·库姆巴尔茨基

特此免费授予任何获得该软件及其相关文档文件副本的人,允许他人同样使用该软件,无需任何限制,涵盖但不限于使用、复制、修改、合并、发布、分发、再许可或销售软件副本的权利。前提是以下条件得到满足:

上述版权声明及本许可声明必须出现在所有完整副本或主要部分中。

软件按“原样”提供,不作任何明示或暗示的保证,涵盖但不限于商品性、特定用途适用性及非侵权方面的担保。在任何情形下,作者或版权所有者均不对因使用本软件或与此相关的任何索赔、损害或其他责任承担责任。

“`python
import time
import threading
from queue import Queue
import os
import sys

class 转盘拨号器:
def __init__(self, openai_client):
self.openai_client = openai_client
self.last_pulse_time = 0
self.running = True
self.pulse_count = 0
self.switch = Switch()
self.audio_manager = AudioManager()
self.speech_recognizer = SpeechRecognizer()

def 启动(self):
# 设置回调函数
self.switch.when_pressed(self._脉冲检测)
self.switch.when_released(self._处理开关释放)
self.switch.when_pressed(self._处理开关按下)

# 初始化为就绪状态
if not self.switch.is_pressed():
# 听筒被拿起
self.audio_manager.开始连续音调()
else:
# 听筒在挂钩上
print(“电话处于空闲状态。请拿起听筒开始。”)
print(“转盘已准备好,请拨号。”)

try:
self._主循环()
except KeyboardInterrupt:
print(“程序终止。”)
self._清理资源()

def _主循环(self):
while self.running:
self._检查号码()
time.sleep(0.1)

def _脉冲检测(self):
if not self.switch.is_pressed():
current_time = time.time()
if current_time – self.last_pulse_time > 抖动时间:
self.pulse_count += 1
self.last_pulse_time = current_time

def _检查号码(self):
if not self.switch.is_pressed() and self.pulse_count > 0:
self.audio_manager.停止连续音调()
time.sleep(1.5) # 等待数字间间隔

if self.pulse_count == 10:
self.pulse_count = 0 # “0” 以 10 次脉冲发送
print(“拨号的服务号码为:”, self.pulse_count)

if self.pulse_count == 1:
self._调用GPT服务()

# 对话结束后恢复拨号音
if not self.switch.is_pressed(): # 只有在听筒未挂断的情况下
self._重置状态()
self.pulse_count = 0

def _调用GPT服务(self):
# 对话上下文历史记录
对话历史记录 = []
第一次交互 = True

# 用于更快的切换
语音识别器 = self.speech_recognizer
回答生成器 = self.response_generator

# 下次录音的准备
下次录音线程 = None
下次录音队列 = Queue()

# 对话循环 – 直到听筒被挂断
while not self.switch.is_pressed():
# 如果有准备好的下次录音线程,使用其结果
if 下次录音线程:
下次录音线程.join()
识别文本 = 下次录音队列.get()
下次录音线程 = None
else:
# 仅在首次迭代或作为回退
print(“正在倾听…” + “(请立即讲话)” if 第一次交互 else “”)
第一次交互 = False

# 开始音频处理
识别文本 = 语音识别器.捕获并转录()
if not 识别文本:
print(“未能识别您的语音内容”)
self.audio_manager.播放文件(AUDIO_FILES[“try_again”])
continue

print(“已理解:”, 识别文本)

# 更新对话上下文历史记录
对话历史记录.append({“角色”: “用户”, “内容”: 识别文本})

# 并行启动下一个录音线程任务
下次录音线程 = threading.Thread(
target=self._后台捕获,
args=(语音识别器, 下次录音队列)
)
下次录音线程.daemon = True
下次录音线程.start()

# 生成回答
回答 = 回答生成器.生成流式响应(识别文本, 对话历史记录)

# 将回答添加到历史记录
对话历史记录.append({“角色”: “助手”, “内容”: 回答})

# 检查听筒是否在此期间被挂断
if self.switch.is_pressed():
break

# 如果到这里,听筒已被挂断
if 下次录音线程 and 下次录音线程.is_alive():
下次录音线程.join(timeout=0.5)

def _后台捕获(self, 识别器, 结果队列):
try:
结果 = 识别器.捕获并转录()
结果队列.put(结果)
except Exception as e:
print(f”后台录音发生错误: {e}”)
结果队列.put(None)

def _重置状态(self):
self.pulse_count = 0
self.audio_manager.停止连续音调()
self.audio_manager.开始连续音调()
print(“转盘已准备好,请拨号。”)

def _处理开关释放(self):
print(“听筒被拿起,系统将重启。”)
self._重启脚本()

def _处理开关按下(self):
print(“听筒被挂断,系统将终止运行。”)
self._清理资源()
self.running = False
# 完整终止前延迟
threading.Timer(1.0, self._重启脚本).start()
return

def _重启脚本(self):
print(“正在重新启动脚本…”)
self.audio_manager.停止连续音调()
os.execv(sys.executable, [‘python’] + sys.argv)

def _清理资源(self):
# 终止音频管理器
self.audio_manager.停止连续音调()
# 如果存在,终止语音识别器
if hasattr(self, ‘speech_recognizer’) and self.speech_recognizer:
self.speech_recognizer.清理()
print(“资源已释放完毕。”)

def 主程序():
# 初始化OpenAI客户端
客户端 = OpenAI(api_key=OPENAI_API_KEY)

# 创建并启动转盘
转盘 = 转盘拨号器(客户端)
转盘.启动()
print(“程序已终止。”)

if __name__ == “__main__”:
主程序()
“`

(以上内容均由Ai生成)

你可能还想读

SK海力士凭借HBM激增首次超越三星,领跑全球内存市场

SK海力士凭借HBM激增首次超越三星,领跑全球内存市场

快速阅读: 据《《韩国先驱报》》称,7月20日,SK海力士首登全球内存芯片市场榜首,受益于AI产品和HBM芯片领先地位。其季度利润达9.2万亿韩元,远超三星。 据韩联社报道,7月20日,韩国京畿道伊川,SK海力士首次登上全球内存芯片市场榜首 […]

发布时间:2025年8月1日
STAN 从谷歌、万代南梦宫和其他公司筹集了 850 万美元

STAN 从谷歌、万代南梦宫和其他公司筹集了 850 万美元

快速阅读: 据《印度教业务线》称,STAN获850万美元融资,由万代南梦宫等机构投资。计划拓展印度市场,加强AI功能与创作者工具。平台用户超2500万,专注移动端社交游戏。 记者获悉,8月1日,社交游戏平台STAN宣布完成850万美元的新一 […]

发布时间:2025年8月1日
“这改变了一切”:谷歌的人工智能模式迫使品牌重新考虑搜索策略

“这改变了一切”:谷歌的人工智能模式迫使品牌重新考虑搜索策略

快速阅读: 据《营销周》称,谷歌推出AI搜索模式,减少外部链接,提升对话式回答。品牌需调整策略,重视内容质量与品牌权威。此变化影响营销方式,竞争加剧。 据谷歌官方消息,7月29日,谷歌在英国推出了基于人工智能的搜索功能AI模式,此前该功能已 […]

发布时间:2025年8月1日
在 Android 上用更智能的应用程序替换 Google Assistant

在 Android 上用更智能的应用程序替换 Google Assistant

快速阅读: 据《电话竞技场》称,据报道,用户可从Google Play下载Meta AI应用,安装后需检查版本是否为230.0.0.36.164或更高。操作方法:进入设置,选择应用,查看Meta AI信息页底部的版本号。 据媒体报道,用户现 […]

发布时间:2025年8月1日
Xero 的英国董事总经理回击人工智能正在抢走会计工作的说法

Xero 的英国董事总经理回击人工智能正在抢走会计工作的说法

快速阅读: 据《UKTN(英国科技新闻)》称,英国科技媒体UKTN报道,Xero英国总经理凯特·海沃德表示,会计行业无需过度担忧AI自动化。尽管四大事务所裁员,但Xero仍持续投资AI技术,提升效率与服务质量。 据英国科技新闻网站UKTN报 […]

发布时间:2025年8月1日
Reddit 计划在搜索引擎市场大力推动人工智能与谷歌竞争:报告

Reddit 计划在搜索引擎市场大力推动人工智能与谷歌竞争:报告

快速阅读: 据《商业标准》称,Reddit CEO表示,公司正将平台转型为搜索引擎,整合AI功能,提升用户体验。Reddit Answers用户已超600万,计划全球推广。 据《The Verge》报道,7月11日,Reddit首席执行官史 […]

发布时间:2025年8月1日
Meta 超出预期,为“个人超级智能”做准备

Meta 超出预期,为“个人超级智能”做准备

快速阅读: 据《RCR无线》称,Meta二季度营收475.2亿美元,净利润183亿美元。CEO扎克伯格称将打造个人超级智能,但数据中心扩容遇挑战。公司计划2025年支出达1140-1180亿美元。 据媒体报道,7月25日,美国加州,社交媒体 […]

发布时间:2025年8月1日
人工智能将导致财富、权力的集中;必须使用人工智能来解决社会挑战:Nilekani

人工智能将导致财富、权力的集中;必须使用人工智能来解决社会挑战:Nilekani

快速阅读: 据《印度教业务线》称,印度联合创始人纳南·尼莱卡尼表示,AI应用于解决实际问题,提升医疗与教育,强调简约设计和持续创新,反对全民基本收入,主张用AI放大人类潜力。 据《亚洲时报》报道,7月27日,纽约,印度信息技术服务巨头Inf […]

发布时间:2025年8月1日