如何将 ChatGPT 变成 TTS 工具

本贴最后更新于 187 天前,其中的信息可能已经时移世易

将 ChatGPT 变成 TTS 工具

ChatGPT 对话中,有一个「Read aloud」功能,可以将回复的内容阅读出来。比如我们可以用一些 Prompt 技巧,让 GPT 重复一段文字,然后让他朗读出来。

image.png

不过 GPT 的 「Read aloud」会直接将语音播放出来,如果想要作为 TTS 工具使用,就不得不去录屏然后将音轨抽离出来。

为了简化操作,可以使用如下这段脚本。https://gist.github.com/frostime/4795b664b83360d6afe1d3ab49bd5e90

function hijackAudio(baseUrl = null) { baseUrl = baseUrl || window.location.origin; // 保存原始函数 const originalFetch = window.fetch; const originalXhrOpen = XMLHttpRequest.prototype.open; let isHijacked = false; // Helper function: 提取 Authorization 头部信息 function extractAuthorizationHeader(headers) { if (headers instanceof Headers) { return headers.get("Authorization"); } else { return headers["Authorization"]; } } // 主函数:劫持 fetch 和 XMLHttpRequest,自动下载音频文件 function hijack() { if (isHijacked) { console.log("Already hijacked."); return; } // 劫持 fetch 请求 window.fetch = function (url, options) { // 检查请求 URL 是否为目标 API if (url.includes(`${baseUrl}/backend-api/synthesize?`)) { console.log("Found fetch request:", url); // 获取 Authorization 头部信息 const headers = options && options.headers ? extractAuthorizationHeader(options.headers) : null; // 修改请求 URL,将格式从 acc 改为 mp3 const modifiedUrl = url.replace(/format:acc/, "format:mp3"); // 发起修改后的请求并处理响应 return originalFetch(modifiedUrl, options).then((response) => { return response.blob().then((blob) => { // 创建下载链接并触发下载 const link = document.createElement("a"); link.href = URL.createObjectURL(blob); link.download = "response.mp3"; link.click(); return response; }); }); } // 如果不是目标请求,继续使用原始 fetch return originalFetch.apply(this, arguments); }; // 劫持 XMLHttpRequest 请求 XMLHttpRequest.prototype.open = function (method, url) { // 检查请求 URL 是否为目标 API if (url.includes(`${baseUrl}/backend-api/synthesize?`)) { const xhr = this; const originalOnReadyStateChange = xhr.onreadystatechange; // 修改 onreadystatechange 以处理响应并触发下载 xhr.onreadystatechange = function () { if (xhr.readyState === 4 && xhr.status === 200) { const blob = new Blob([xhr.response], { type: "application/octet-stream" }); const link = document.createElement("a"); link.href = URL.createObjectURL(blob); link.download = "response.mp3"; link.click(); } // 调用原始的 onreadystatechange(如果存在) if (originalOnReadyStateChange) { originalOnReadyStateChange.apply(xhr, arguments); } }; // 修改请求 URL,将格式从 acc 改为 mp3 const modifiedUrl = url.replace(/format:acc/, "format:mp3"); // 保持 Authorization 头部信息 const authorizationHeader = xhr.getRequestHeader("Authorization"); if (authorizationHeader) { xhr.setRequestHeader("Authorization", authorizationHeader); } // 使用修改后的 URL 调用原始的 open 方法 originalXhrOpen.call(this, method, modifiedUrl); } else { // 如果不是目标请求,继续使用原始 open 方法 originalXhrOpen.apply(this, arguments); } }; isHijacked = true; console.log("Hijack activated and listeners set."); } // 重置函数:恢复原始状态 function reset() { if (!isHijacked) { console.log("Not hijacked yet."); return; } window.fetch = originalFetch; XMLHttpRequest.prototype.open = originalXhrOpen; isHijacked = false; console.log("Reset completed. Original functions restored."); } return { hijack, reset }; }

这段脚本会劫持 ChatGPT 的文本转语音请求并直接下载一份 mp3 文件。具体使用方法如下:

  1. 首先把这段脚本粘贴到 ChatGPT 网页的控制台中
  2. 执行 const hijack = hijackAudio()
  3. 执行 hijack.hijack()
  4. 然后点击「Read aloud」,等待片刻会下载一个 mp3 文件

image.png

  • JavaScript

    JavaScript 一种动态类型、弱类型、基于原型的直译式脚本语言,内置支持类型。它的解释器被称为 JavaScript 引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在 HTML 网页上使用,用来给 HTML 网页增加动态功能。

    733 引用 • 1280 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
  • DaVinci

    这个真不错。Mark

推荐标签 标签

  • CloudFoundry

    Cloud Foundry 是 VMware 推出的业界第一个开源 PaaS 云平台,它支持多种框架、语言、运行时环境、云平台及应用服务,使开发人员能够在几秒钟内进行应用程序的部署和扩展,无需担心任何基础架构的问题。

    5 引用 • 18 回帖 • 183 关注
  • Scala

    Scala 是一门多范式的编程语言,集成面向对象编程和函数式编程的各种特性。

    13 引用 • 11 回帖 • 158 关注
  • TextBundle

    TextBundle 文件格式旨在应用程序之间交换 Markdown 或 Fountain 之类的纯文本文件时,提供更无缝的用户体验。

    1 引用 • 2 回帖 • 80 关注
  • Follow
    4 引用 • 12 回帖 • 11 关注
  • RESTful

    一种软件架构设计风格而不是标准,提供了一组设计原则和约束条件,主要用于客户端和服务器交互类的软件。基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制。

    30 引用 • 114 回帖 • 7 关注
  • 前端

    前端技术一般分为前端设计和前端开发,前端设计可以理解为网站的视觉设计,前端开发则是网站的前台代码实现,包括 HTML、CSS 以及 JavaScript 等。

    246 引用 • 1338 回帖
  • SOHO

    为成为自由职业者在家办公而努力吧!

    7 引用 • 55 回帖 • 3 关注
  • 链滴

    链滴是一个记录生活的地方。

    记录生活,连接点滴

    175 引用 • 3857 回帖
  • 单点登录

    单点登录(Single Sign On)是目前比较流行的企业业务整合的解决方案之一。SSO 的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。

    9 引用 • 25 回帖
  • WebComponents

    Web Components 是 W3C 定义的标准,它给了前端开发者扩展浏览器标签的能力,可以方便地定制可复用组件,更好的进行模块化开发,解放了前端开发者的生产力。

    1 引用 • 7 关注
  • wolai

    我来 wolai:不仅仅是未来的云端笔记!

    2 引用 • 14 回帖 • 6 关注
  • Chrome

    Chrome 又称 Google 浏览器,是一个由谷歌公司开发的网页浏览器。该浏览器是基于其他开源软件所编写,包括 WebKit,目标是提升稳定性、速度和安全性,并创造出简单且有效率的使用者界面。

    63 引用 • 289 回帖
  • Rust

    Rust 是一门赋予每个人构建可靠且高效软件能力的语言。Rust 由 Mozilla 开发,最早发布于 2014 年 9 月。

    58 引用 • 22 回帖 • 6 关注
  • 分享

    有什么新发现就分享给大家吧!

    248 引用 • 1794 回帖 • 1 关注
  • 架构

    我们平时所说的“架构”主要是指软件架构,这是有关软件整体结构与组件的抽象描述,用于指导软件系统各个方面的设计。另外还有“业务架构”、“网络架构”、“硬件架构”等细分领域。

    143 引用 • 442 回帖 • 1 关注
  • IPFS

    IPFS(InterPlanetary File System,星际文件系统)是永久的、去中心化保存和共享文件的方法,这是一种内容可寻址、版本化、点对点超媒体的分布式协议。请浏览 IPFS 入门笔记了解更多细节。

    21 引用 • 245 回帖 • 227 关注
  • Linux

    Linux 是一套免费使用和自由传播的类 Unix 操作系统,是一个基于 POSIX 和 Unix 的多用户、多任务、支持多线程和多 CPU 的操作系统。它能运行主要的 Unix 工具软件、应用程序和网络协议,并支持 32 位和 64 位硬件。Linux 继承了 Unix 以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。

    952 引用 • 944 回帖
  • 书籍

    宋真宗赵恒曾经说过:“书中自有黄金屋,书中自有颜如玉。”

    78 引用 • 396 回帖
  • 服务器

    服务器,也称伺服器,是提供计算服务的设备。由于服务器需要响应服务请求,并进行处理,因此一般来说服务器应具备承担服务并且保障服务的能力。

    125 引用 • 585 回帖
  • 电影

    这是一个不能说的秘密。

    122 引用 • 608 回帖
  • API

    应用程序编程接口(Application Programming Interface)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。

    79 引用 • 431 回帖
  • Unity

    Unity 是由 Unity Technologies 开发的一个让开发者可以轻松创建诸如 2D、3D 多平台的综合型游戏开发工具,是一个全面整合的专业游戏引擎。

    25 引用 • 7 回帖 • 122 关注
  • 房星科技

    房星网,我们不和没有钱的程序员谈理想,我们要让程序员又有理想又有钱。我们有雄厚的房地产行业线下资源,遍布昆明全城的 100 家门店、四千地产经纪人是我们坚实的后盾。

    6 引用 • 141 回帖 • 591 关注
  • 30Seconds

    📙 前端知识精选集,包含 HTML、CSS、JavaScript、React、Node、安全等方面,每天仅需 30 秒。

    • 精选常见面试题,帮助您准备下一次面试
    • 精选常见交互,帮助您拥有简洁酷炫的站点
    • 精选有用的 React 片段,帮助你获取最佳实践
    • 精选常见代码集,帮助您提高打码效率
    • 整理前端界的最新资讯,邀您一同探索新世界
    488 引用 • 384 回帖 • 9 关注
  • Flutter

    Flutter 是谷歌的移动 UI 框架,可以快速在 iOS 和 Android 上构建高质量的原生用户界面。 Flutter 可以与现有的代码一起工作,它正在被越来越多的开发者和组织使用,并且 Flutter 是完全免费、开源的。

    39 引用 • 92 回帖 • 4 关注
  • SQLServer

    SQL Server 是由 [微软] 开发和推广的关系数据库管理系统(DBMS),它最初是由 微软、Sybase 和 Ashton-Tate 三家公司共同开发的,并于 1988 年推出了第一个 OS/2 版本。

    21 引用 • 31 回帖 • 3 关注
  • FlowUs

    FlowUs.息流 个人及团队的新一代生产力工具。

    让复杂的信息管理更轻松、自由、充满创意。

    1 引用