如何将 ChatGPT 变成 TTS 工具

将 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 网页增加动态功能。

    729 引用 • 1278 回帖

相关帖子

欢迎来到这里!

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

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

    这个真不错。Mark

推荐标签 标签

  • 旅游

    希望你我能在旅途中找到人生的下一站。

    93 引用 • 901 回帖 • 2 关注
  • MySQL

    MySQL 是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,目前属于 Oracle 公司。MySQL 是最流行的关系型数据库管理系统之一。

    692 引用 • 535 回帖
  • Caddy

    Caddy 是一款默认自动启用 HTTPS 的 HTTP/2 Web 服务器。

    12 引用 • 54 回帖 • 168 关注
  • 数据库

    据说 99% 的性能瓶颈都在数据库。

    345 引用 • 739 回帖
  • JWT

    JWT(JSON Web Token)是一种用于双方之间传递信息的简洁的、安全的表述性声明规范。JWT 作为一个开放的标准(RFC 7519),定义了一种简洁的,自包含的方法用于通信双方之间以 JSON 的形式安全的传递信息。

    20 引用 • 15 回帖 • 18 关注
  • Sphinx

    Sphinx 是一个基于 SQL 的全文检索引擎,可以结合 MySQL、PostgreSQL 做全文搜索,它可以提供比数据库本身更专业的搜索功能,使得应用程序更容易实现专业化的全文检索。

    1 引用 • 213 关注
  • RYMCU

    RYMCU 致力于打造一个即严谨又活泼、专业又不失有趣,为数百万人服务的开源嵌入式知识学习交流平台。

    4 引用 • 6 回帖 • 54 关注
  • 音乐

    你听到信仰的声音了么?

    61 引用 • 512 回帖
  • FFmpeg

    FFmpeg 是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。

    23 引用 • 32 回帖
  • Love2D

    Love2D 是一个开源的, 跨平台的 2D 游戏引擎。使用纯 Lua 脚本来进行游戏开发。目前支持的平台有 Windows, Mac OS X, Linux, Android 和 iOS。

    14 引用 • 53 回帖 • 544 关注
  • C

    C 语言是一门通用计算机编程语言,应用广泛。C 语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。

    85 引用 • 165 回帖
  • iOS

    iOS 是由苹果公司开发的移动操作系统,最早于 2007 年 1 月 9 日的 Macworld 大会上公布这个系统,最初是设计给 iPhone 使用的,后来陆续套用到 iPod touch、iPad 以及 Apple TV 等产品上。iOS 与苹果的 Mac OS X 操作系统一样,属于类 Unix 的商业操作系统。

    87 引用 • 139 回帖 • 1 关注
  • OpenShift

    红帽提供的 PaaS 云,支持多种编程语言,为开发人员提供了更为灵活的框架、存储选择。

    14 引用 • 20 回帖 • 649 关注
  • 房星科技

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

    6 引用 • 141 回帖 • 590 关注
  • 倾城之链
    23 引用 • 66 回帖 • 159 关注
  • Mobi.css

    Mobi.css is a lightweight, flexible CSS framework that focus on mobile.

    1 引用 • 6 回帖 • 752 关注
  • Solidity

    Solidity 是一种智能合约高级语言,运行在 [以太坊] 虚拟机(EVM)之上。它的语法接近于 JavaScript,是一种面向对象的语言。

    3 引用 • 18 回帖 • 431 关注
  • OneDrive
    2 引用 • 3 关注
  • Elasticsearch

    Elasticsearch 是一个基于 Lucene 的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于 RESTful 接口。Elasticsearch 是用 Java 开发的,并作为 Apache 许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。

    117 引用 • 99 回帖 • 208 关注
  • 前端

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

    245 引用 • 1338 回帖 • 1 关注
  • Shell

    Shell 脚本与 Windows/Dos 下的批处理相似,也就是用各类命令预先放入到一个文件中,方便一次性执行的一个程序文件,主要是方便管理员进行设置或者管理用的。但是它比 Windows 下的批处理更强大,比用其他编程程序编辑的程序效率更高,因为它使用了 Linux/Unix 下的命令。

    124 引用 • 74 回帖 • 1 关注
  • SOHO

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

    7 引用 • 55 回帖 • 2 关注
  • 阿里云

    阿里云是阿里巴巴集团旗下公司,是全球领先的云计算及人工智能科技公司。提供云服务器、云数据库、云安全等云计算服务,以及大数据、人工智能服务、精准定制基于场景的行业解决方案。

    84 引用 • 324 回帖
  • 博客

    记录并分享人生的经历。

    273 引用 • 2388 回帖
  • OAuth

    OAuth 协议为用户资源的授权提供了一个安全的、开放而又简易的标准。与以往的授权方式不同之处是 oAuth 的授权不会使第三方触及到用户的帐号信息(如用户名与密码),即第三方无需使用用户的用户名与密码就可以申请获得该用户资源的授权,因此 oAuth 是安全的。oAuth 是 Open Authorization 的简写。

    36 引用 • 103 回帖 • 28 关注
  • Pipe

    Pipe 是一款小而美的开源博客平台。Pipe 有着非常活跃的社区,可将文章作为帖子推送到社区,来自社区的回帖将作为博客评论进行联动(具体细节请浏览 B3log 构思 - 分布式社区网络)。

    这是一种全新的网络社区体验,让热爱记录和分享的你不再感到孤单!

    132 引用 • 1115 回帖 • 121 关注
  • OkHttp

    OkHttp 是一款 HTTP & HTTP/2 客户端库,专为 Android 和 Java 应用打造。

    16 引用 • 6 回帖 • 84 关注