尝试用chatGPT解决文字转语音问题

895 阅读5分钟

在互联网时代,文字已经成为人们交流的重要方式之一。但是在一些场景下,比如阅读长篇文章时,人们可能更希望能够将文字转化为听觉形式的语音。这时候,文字转语音技术就发挥了巨大的作用。现在,越来越多的工具和服务开始提供文字转语音的功能,让人们能够更加方便地享受到语音阅读的便利。我使用SpeechSynthesis这个接口的时候遇到了问题,在Android系统上不能正常使用,下边是尝试使用gpt来解决这个问题的经历:

问:使用js写一个文本转语音的程序

gpt:你可以使用Web API中的SpeechSynthesis接口来实现JavaScript文字转语音功能。

下面是一个简单的示例代码:

const synthesis = window.speechSynthesis;
const utterance = new SpeechSynthesisUtterance('Hello, world!');
synthesis.speak(utterance);

其中,speechSynthesis是一个全局对象,代表浏览器的TTS(文本到语音)功能;SpeechSynthesisUtterance是一个类,代表一个要朗读的文本。

你可以创建一个新的SpeechSynthesisUtterance实例,将要朗读的文本作为构造函数参数传入,然后调用speak()方法来开始朗读。

值得注意的是,不同的浏览器可能会有不同的支持程度,具体情况请查阅相关文档。

这里发现了问题speechSynthesispeechSynthesiss在安卓上无法使用

问:Android系统无法使用speechSynthesis怎么解决

这里它推荐了一些第三方库

gpt:如果在安卓手机上使用SpeechSynthesis时遇到问题,可能是因为某些浏览器不支持Web Speech API。目前,只有Google Chrome和Mozilla Firefox完全支持该API。

如果你的应用程序需要在其他浏览器上运行,你可以使用第三方TTS库来实现语音合成功能,例如:

这些库提供了各种语言和声音选项,以及一些高级设置,例如音量和语速控制等。你可以根据你的需求选择一个最适合你的库。

另外,在使用Web Speech API时,请确保你已经允许浏览器访问手机麦克风和语音输入权限。你可以在手机的设置中找到这个选项并进行配置。

继续提问:免费的文本转技术

gpt:目前比较流行的免费文本转语音JS技术有两种方式:Web Speech API和Google Translate TTS API。

  1. Web Speech API (老问题Android无法使用)

Web Speech API是一个W3C标准,它提供了JavaScript接口,用于在浏览器中实现文本转语音(TTS)和语音识别(SR)功能。现在所有主流浏览器都支持这个API。

使用Web Speech API可以在你的网页中将文本转换成语音,并播放出来,可以使用以下代码片段:

var synth = window.speechSynthesis;

var voices = [];

function populateVoiceList() {
  voices = synth.getVoices();
}

populateVoiceList();

var utterThis = new SpeechSynthesisUtterance('Hello, World!');

utterThis.voice = voices[0];

synth.speak(utterThis);

2. Google Translate TTS API (需要科学上网)

Google Translate TTS API 提供了一个简单的HTTP GET接口,它可以用于通过调用URL来转换文本成语音。

你可以使用以下代码片段直接使用Google Translate TTS API 来实现TTS:

let audio = new Audio();
let text = encodeURIComponent('文本转语音'); // 需要转换成语音的文本
audio.src = `https://translate.google.com/translate_tts?ie=UTF-8&tl=zh-CN&client=tw-ob&q=${text}`; 
audio.play(); // 播放语音

需要注意的是,Google Translate TTS API 可能存在一些限制,对于大量请求可能会有限制。同时,使用此API需要连接到互联网。

问:Android系统不支持Web Speech API解决办法

gpt:如果 Android 系统不支持 Web Speech API,您可以考虑使用第三方 TTS 引擎,并通过 JavaScript 脚本调用其接口来实现语音合成的功能。以下是一些常用的第三方 TTS 引擎:

  1. Baidu TTS:百度 TTS 是百度云推出的在线语音合成服务,支持多种语音风格和语言。您可以在自己的网站或应用中使用它来将文本转换成语音。
  2. Google Cloud Text-to-Speech:Google Cloud Text-to-Speech 是 Google Cloud 推出的在线 TTS 服务,提供高质量、可定制的语音合成服务,支持多种语言和音频文件格式。
  3. iFlyTek TTS:讯飞 TTS 是科大讯飞推出的在线语音合成服务,提供多种语言和方言的语音风格,可应用于智能硬件、教育、游戏等场景。

通过使用第三方 TTS 引擎,即使 Android 系统不支持 Web Speech API,也能实现语音合成的功能。您只需要在 JavaScript 脚本中调用相应的接口,将需要转换成音频的文本传递给 API,即可得到相应的音频文件。

如果您使用的是 Vue 框架开发应用程序,可以使用 axios 或其他 HTTP 库来与第三方 TTS 引擎进行通信,获取相应的音频文件。在组件中定义相应的方法来处理 TTS 引擎的请求和响应,并将音频文件作为响应返回给页面上的播放器进行播放。

还是推荐第三方服务

换个问法: 不使用第三方库和语音合成服务商怎么用js调用Android系统自带的Text-to-Speech引擎(TTS)

gpt:代码如下:

var context = window.Android || {};

// 构建TTS引擎对象
var tts = new context.TextToSpeech(context, function() {
// 初始化TTS引擎成功后的回调函数
// 可以在此处设置TTS引擎的语音参数
});

// 将文本输入到TTS引擎中
tts.speak("Hello, World!", TextToSpeech.QUEUE_FLUSH, null, "test");

// 监听TTS引擎合成出来的语音
tts.setOnUtteranceProgressListener({
onStart: function(utteranceId) {
// TTS引擎开始合成语音时的回调函数
},
onDone: function(utteranceId) {
// TTS引擎合成语音结束时的回调函数
// 在此处将语音播放出来
}
});

经测试还是无法播放,明天继续...