帮微软语音助手纠正“阿弥陀佛”“e”字错误发音的技巧

2024-01-28 18:10

本文主要是介绍帮微软语音助手纠正“阿弥陀佛”“e”字错误发音的技巧,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、前言

微软AI文字转语音助手,现已被大家普便应用。最近在传统文化佛学名词的发音转换应用中,发现了一个致命的错误。那就是“阿弥陀佛”中的“”字的“a”发音,被误读为“e”。说起这个重大的错误,佛门大德南怀瑾老师也一再叮嘱,希望后人纠正错误发音。毕竟佛学文化是严谨严肃的民族文化。传错了,真就误导后世子孙了。

其实,究其缘起真不怪微软。毕竟西方人不了解东方文化是很正常的。但是,得知这个错误发音,竟然是被某些热门电视剧误读后,才被大众广泛沿用的,不免让人唏嘘。现在国人编剧们,确实要多恶补传统文化了。不然,这复兴中国文化的重任,情何以担呐。哈哈。

字在佛法的经咒中使用很多,含义广泛,是业的代表。那么,问题来了,如何让语音助手云希改掉错误发音呢?

二、解决方案

1、添加标点符号法:

在这里插入图片描述

经过反复测试,发现【阿弥陀佛】连读时,一直是错误的e mi tuo fo发音。通过在字后加各种分割符测试后。发现,加上一个上斜点【阿`弥陀佛】后,就可以得到语速正常的“a mi tuo fo”发音了。其他的分割符或标点,字读音时间过长,不适合连读。好了,这一历史性发音错误,终于解决了。哈哈。
南无阿弥陀佛。

2、微软官方ssml标记法:

以下内容转载自:www.360mb.net/32732.html
前提是软件要支持ssml标记,建议使用开源 tts-vue 软件,gitee和github都有。

1)语法标记说明:

使用微软语音合成 API 进行语音合成时,常用的事件处理包括以下几个方面:

a. 停顿:语音合成会自动根据标点符号以及文本内容进行停顿和语调变换。同时,可以通过添加 SSML 标记来控制停顿的时长和位置,例如使用 <break> 标记来指定停顿的时间长度或调整语调。需要注意的是,停顿时间长度应该适当,过长或过短都不利于语音合成的自然度。

b. 多音:为了避免多音字在语音合成中的发音出现错误,可以通过在相应文字上添加注音或拼音信息来指定正确的读音。例如,可以使用 <phoneme> 标记来指定复杂或罕见的词汇的发音,或使用 <sub> 标记来替换不常用或特殊的词汇。需要注意的是,正确指定多音字的发音对于语音合成的质量具有重要影响。

在使用微软语音合成 API 进行语音合成时,需要注意上述几个方面,并采取相应的措施来保证语音合成的自然度和质量。

2)范例:汉字多音字处理

<phoneme> 标记是 SSML(Speech Synthesis Markup Language)中的一个元素,用于指定特定音素或音序列的发音。在 Microsoft SAPI (Speech API)中,<phoneme> 标记可以使用 alphabet 属性指定音素表类型,使用 ph 属性指定具体的音素或音序列。

中文案例

<speak><s><phoneme alphabet="sapi" ph="a 1">阿</phoneme>弥陀佛。</s><s><phoneme alphabet="sapi" ph="e 1">阿</phoneme>弥陀佛。</s>
</speak>

<phoneme alphabet="sapi" ph="shan 4">单</phoneme> 这个例子中,alphabet 属性指定了音素表类型为 Microsoft SAPI,ph 属性指定了要发音的音素或音序列为 “shan 4”,这表示 “单” 这个汉字的第四声音。

因此,当微软语音合成 API 遇到这个 <phoneme> 标记时,会根据指定的音素进行发音,从而可以实现更准确的语音合成效果。

其它案例:

<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis" xml:lang="en-US"><voice name="en-US-JennyNeural"><phoneme alphabet="ipa" ph="tə.ˈmeɪ.toʊ"> tomato </phoneme></voice>
</speak>
<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis" xml:lang="en-US"><voice name="en-US-JennyNeural"><phoneme alphabet="ipa" ph="təmeɪˈtoʊ"> tomato </phoneme></voice>
</speak>
<speak version="1.0" xmlns="https://www.w3.org/2001/10/synthesis" xml:lang="en-US"><voice name="en-US-JennyNeural"><phoneme alphabet="sapi" ph="iy eh n y uw eh s"> en-US </phoneme></voice>
</speak>
<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis" xml:lang="en-US"><voice name="en-US-JennyNeural"><s>His name is Mike <phoneme alphabet="ups" ph="JH AU"> Zhou </phoneme></s></voice>
</speak>
<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis" xml:lang="en-US"><voice name="en-US-JennyNeural"><phoneme alphabet='x-sampa' ph='he."lou'>hello</phoneme></voice>
</speak>

停顿处理
在使用微软文字转语音 API 进行 SSML 播放时,可以使用 标签来控制语音合成的停顿或延迟时间。 标签有一个 time 属性,用于指定停顿或延迟的时间长度,单位为毫秒。

例如,下面的代码片段表示在播放语音过程中间隔 2 秒钟的时间:

<speak>
<s>这是一个示例句子。</s>
<break time="2000ms" />
<s>这是下一个示例句子。</s>
</speak>

在这段代码中,通过在两个语音段之间插入 标签,并设置 time属性为“2000ms”,就实现了两个语音段之间停顿 2 秒钟的效果。

需要注意的是,标签的 time属性值不宜过长或过短,过长可能会使语音合成显得拖沓生硬,而过短则可能导致语音合成不太自然。因此,在使用标签时,需要根据实际情况选择合适的停顿或延迟时间。其中2000ms=2s也就是2000毫秒等于2秒,这里的事停顿事件可按需自行处理。

南无阿弥陀佛

这篇关于帮微软语音助手纠正“阿弥陀佛”“e”字错误发音的技巧的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/654392

相关文章

JS纯前端实现浏览器语音播报、朗读功能的完整代码

《JS纯前端实现浏览器语音播报、朗读功能的完整代码》在现代互联网的发展中,语音技术正逐渐成为改变用户体验的重要一环,下面:本文主要介绍JS纯前端实现浏览器语音播报、朗读功能的相关资料,文中通过代码... 目录一、朗读单条文本:① 语音自选参数,按钮控制语音:② 效果图:二、朗读多条文本:① 语音有默认值:②

90%的人第一步就错了! 顺利登录wifi路由器后台的技巧

《90%的人第一步就错了!顺利登录wifi路由器后台的技巧》登录Wi-Fi路由器,其实就是进入它的后台管理页面,很多朋友不知道该怎么进入路由器后台设置,感兴趣的朋友可以花3分钟了解一下... 你是不是也遇到过这种情况:家里网速突然变慢、想改WiFi密码却不知道从哪进路由器、新装宽带后完全不知道怎么设置?别慌

录音功能在哪里? 电脑手机等设备打开录音功能的技巧

《录音功能在哪里?电脑手机等设备打开录音功能的技巧》很多时候我们需要使用录音功能,电脑和手机这些常用设备怎么使用录音功能呢?下面我们就来看看详细的教程... 我们在会议讨论、采访记录、课堂学习、灵感创作、法律取证、重要对话时,都可能有录音需求,便于留存关键信息。下面分享一下如何在电脑端和手机端上找到录音功能

Python函数的基本用法、返回值特性、全局变量修改及异常处理技巧

《Python函数的基本用法、返回值特性、全局变量修改及异常处理技巧》本文将通过实际代码示例,深入讲解Python函数的基本用法、返回值特性、全局变量修改以及异常处理技巧,感兴趣的朋友跟随小编一起看看... 目录一、python函数定义与调用1.1 基本函数定义1.2 函数调用二、函数返回值详解2.1 有返

深度解析Java @Serial 注解及常见错误案例

《深度解析Java@Serial注解及常见错误案例》Java14引入@Serial注解,用于编译时校验序列化成员,替代传统方式解决运行时错误,适用于Serializable类的方法/字段,需注意签... 目录Java @Serial 注解深度解析1. 注解本质2. 核心作用(1) 主要用途(2) 适用位置3

Debian 13升级后网络转发等功能异常怎么办? 并非错误而是管理机制变更

《Debian13升级后网络转发等功能异常怎么办?并非错误而是管理机制变更》很多朋友反馈,更新到Debian13后网络转发等功能异常,这并非BUG而是Debian13Trixie调整... 日前 Debian 13 Trixie 发布后已经有众多网友升级到新版本,只不过升级后发现某些功能存在异常,例如网络转

Java实现复杂查询优化的7个技巧小结

《Java实现复杂查询优化的7个技巧小结》在Java项目中,复杂查询是开发者面临的“硬骨头”,本文将通过7个实战技巧,结合代码示例和性能对比,手把手教你如何让复杂查询变得优雅,大家可以根据需求进行选择... 目录一、复杂查询的痛点:为何你的代码“又臭又长”1.1冗余变量与中间状态1.2重复查询与性能陷阱1.

Python内存优化的实战技巧分享

《Python内存优化的实战技巧分享》Python作为一门解释型语言,虽然在开发效率上有着显著优势,但在执行效率方面往往被诟病,然而,通过合理的内存优化策略,我们可以让Python程序的运行速度提升3... 目录前言python内存管理机制引用计数机制垃圾回收机制内存泄漏的常见原因1. 循环引用2. 全局变

MySQL中查询和展示LONGBLOB类型数据的技巧总结

《MySQL中查询和展示LONGBLOB类型数据的技巧总结》在MySQL中LONGBLOB是一种二进制大对象(BLOB)数据类型,用于存储大量的二进制数据,:本文主要介绍MySQL中查询和展示LO... 目录前言1. 查询 LONGBLOB 数据的大小2. 查询并展示 LONGBLOB 数据2.1 转换为十

Python进阶之列表推导式的10个核心技巧

《Python进阶之列表推导式的10个核心技巧》在Python编程中,列表推导式(ListComprehension)是提升代码效率的瑞士军刀,本文将通过真实场景案例,揭示列表推导式的进阶用法,希望对... 目录一、基础语法重构:理解推导式的底层逻辑二、嵌套循环:破解多维数据处理难题三、条件表达式:实现分支