小程序增加语音识别转文字的功能所遇问题及解决记录

2025-04-03
来源:网络整理

最近,添加了语音识别将文本转换为迷你程序的功能,并且有无穷无尽的技巧,因此我将在此处录制。

微信开发人员工具

开发人员工具上的录制文件与移动终端格式不同。它们只能暂时在工具上进行播放和调试,并且不能直接播放或在客户身上播放。

当我发现在工具上录制的路径是:客户端上的录制为://xxx.mp3。愚弄人们的格式没有什么不同,而是不同的映射路径。

实际上,兼容并不难。每当我提示文字线时,这都很丑陋。

采样率和编码率限制

每个采样率具有编码代码速率范围的相应有效值。设置非法采样率或编码代码率将导致记录失败。详细查看

.html

一开始我没有注意,这导致录制失败了。

尝试几次后,使用此配置,感觉录制识别率和音量相对较好:

sampleRate: 16000, //采样率 numberOfChannels: 1, //录音通道数 encodeBitRate: 96000, //编码码率

单个通道基本上是必须的。因为作为编程旅馆,旅馆只支持单个通道。这也是可能的,但是必须考虑截断对识别的影响。暂时没有用。

记录优化

因为可能会错误地按下,所以记录的记录少于直接忽略。

此外,在发布录制按钮后,请延迟一些时间,然后才能实际停止录制。

记录文件格式

微信录制文件支持mp3和AAC。这两个格式文件都较小,并且AAC文件大小较小。这对于上传和更快是一件好事。

但是语音识别文本并不友好。由于, ASR和的语音到文本接口不支持AAC和MP3,因此它们通常需要PCM或WAV格式。

如果微信录制可以提供WAV格式,那么服务器不需要转换格式,但是WAV格式是MP3和AAC的5至10倍,至少在短期内将没有机会,这也是许多人抱怨的事情。

服务器转换记录文件格式

可以使用Java第三方库或致电将其转换。应该注意的是,转换是根据标识API的要求进行的。例如,阿里巴巴云ASR的要求是:

支持音频编码格式:PCM(未压缩的PCM文件或WAV文件),opus,单声道(单声道),带有采样位;

支持音频采样率:;

微信文字转语音软件_微信小程序开发语音转文字_微信文字转语音小程序制作

Java使用数组传递参数

转换音频和视频,使用它供使用。安装后,使用Java创建一个新的程序调用。

Process = new ProcessBuilder("ffmpeg -i in.mp3 out.wav").start();

总是提示。后来,我查看了该文档,发现应以数组的形式传递参数。

Process = new ProcessBuilder("ffmpeg", "-y", "-i", "in.mp3", "out.wav").start();

这将成功开始。

关于Java启动过程,这不是本文的重点。将来我将写一篇文章的摘要。

阿里巴巴云ASR SDK使用问题

这个问题是一天,当我考虑时,我真的呕吐了血液。

问题在于,无法识别出在微信上记录的许多声音。

一开始,我将录制MP3文件直接转换为PCM文件,该文件可以在本地播放,但是 ASR SDK无法识别它。起初,我认为这是一个文件编码问题。我特别检查了ASR支持的文件格式,并使用了检查和查看属性,但我没有看到问题。

即使是启动过程转换也已更改,如果您使用Java库,它仍然不起作用。

后来,为了促进测试问题,使用ASR接口对录制文件进行了测试,并且可以对其进行编程以识别它们! SDK似乎是一个问题。因此,打开官方文件示例比较。我发现我正在使用SDK 2.x。对不起,我已经复制并粘贴了很多!我想哭,但没有眼泪。

// TODO 重要提示:这里是用读取本地文件的形式模拟实时获取语音流并发送的,因为read很快,所以这里需要sleep // TODO 如果是真正的实时获取语音,则无需sleep, 如果是8k采样率语音,第二个参数改为8000 int deltaSleep = getSleepDelta(len, sampleRate); Thread.sleep(deltaSleep);

正确的设置也更少。

阿里巴巴云ASR过期

因为我使用了免费版的ASR版本并且没有为工厂充电,所以一天之内失败了,导致联合调试期间突然出现错误。

最后,我无法忍受,所以我写了一项定时任务以每小时更新。

这是VIP

wx。返回值

微信小程序开发语音转文字_微信文字转语音软件_微信文字转语音小程序制作

将界面封装以均匀解析查询结果(文本,语音)。发现了奇怪的问题:

如果使用文本查询,则可以使用语音查询正常解析结果。结果已返回,但不能解析!

唯一的.log()打印出来比较

第一行是通过wx。()启动文本查询。

第二行是在通过wx。()和查询上传语音文件后将语音直接传输到文本。

WX。返回值在对象上。

WX。返回值是“字符串”!

WX。返回值是“字符串”!

WX。返回值是“字符串”!

我必须说三遍重要的话。尽管-type:“/json; = utf8”,但微信完全不会转换!很骗!

解决方案:json。(res.data)在WX上。返回值以获取JSON对象。

更换和

由于官方的Mini计划项目帐户一直在拖累,而且没有应用程序,所以在此期间,我已经使用了个人和发展。

准备好官方帐户后,Mini计划项目已更新,并发布了内部体验软件包。

晚上已经是1:30,我的想法有些困惑。我仅更新了Mini程序,但实际上我忘了更新服务器和服务器。 。 。

因此登录反复失败。

报告了服务器的应用程序已更新,但它仍然是用户。我记得我忘记了仍然有一个没有清除的缓存,里面有一个自定义的缓存。现在,真正的经历没有问题。

但是,微信开发人员工具无法再次登录。经过重复的探索后,我发现在更改迷你程序后,清除所有数据,关闭开发人员工具,然后再次打开它,这是正常的。它应该是微信开发人员工具中的错误。

总结

以上是编辑向您介绍的微信微型程序,以实现语音识别对文本和遇到的陷阱的功能。我希望这对您有帮助。如果您有任何疑问,请给我留言,编辑将及时回复您。非常感谢您对我们网站的支持!

分享