Swift 4 中的文本到语音转换

2024-01-03

我正在尝试将文本到语音功能集成到我的 iOS 应用程序中。

为此我正在使用AVSpeechUtterance and AVSpeechSynthesisVoice类的AVFoundation框架。

extension String {
    func speech(with pronunciation: String) {
        let utterance = AVSpeechUtterance(attributedString: NSAttributedString(string: self, attributes: [.accessibilitySpeechIPANotation : pronunciation]))
        utterance.voice = AVSpeechSynthesisVoice(language: "en-US")
        let synth = AVSpeechSynthesizer()
        DispatchQueue.main.async {
            synth.speak(utterance)
        }
    }
}

我面临的问题是发音wind单词作为动词和名词,即

  1. 风作为verb发音为:waɪnd
  2. 和风作为noun发音为:wɪnd

上述发音字符串遵循国际音标 (IPA).

但是,我没有得到预期的结果。


如果您想要特定拼写的 IPA 翻译,我建议使用位于以下位置的 iOS 功能:

  • Settings > General > Accessibility > Speech > Pronunciations (iOS 12).
  • Settings > Accessibility > Spoken Content > Pronunciations (iOS 13)

选择所需的结果后,您可以在你的代码中使用它 https://a11y-guidelines.orange.com/mobile_EN/dev-ios.html#speech-synthesis由语音合成器发声。

EDIT

这个解决方案也不适合我。

我对您的评论感到非常惊讶,因为当我按照提供的链接的每个步骤操作时,我得到了下面的代码片段:

override func viewDidAppear(_ animated: Bool) {
        super.viewDidAppear(animated)

        let pronunciationKey = NSAttributedString.Key(rawValue: AVSpeechSynthesisIPANotationAttribute)

//        let attrStr = NSMutableAttributedString(string: "blablablaNOUN",
//                                                attributes: [pronunciationKey: "ˈwɪnd"])
    let attrStr = NSMutableAttributedString(string: "blablablaVERB",
                                            attributes: [pronunciationKey: "ˈwa͡ɪnd"])
        let utterance = AVSpeechUtterance(attributedString: attrStr)

        let synthesizer = AVSpeechSynthesizer()
        synthesizer.speak(utterance)
}

...当我启动这个空白应用程序时更改后iPhone Language in the Settings - General - Language & Region菜单中,我得到了动词和名词的正确发音。

复制粘贴上面的代码片段并自行测试。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Swift 4 中的文本到语音转换 的相关文章

随机推荐

  • 如何在mybatis 3中使用if语句比较字符串-动态sql

    在myBatis 3中使用动态sql时如何比较字符串 以前使用 iBatis 您可以执行以下操作
  • Delphi XE2 RTTI坏了?

    我最近从 D2010 迁移到 DXE2 并在 XE2 和 XE3 在我的朋友 XE3 中测试 中发现了一个与类内 TBytes 字段的 RTTI 生成相关的致命错误 或功能 我发现类内 TBytes 变量的 RTTI 信息永远不会生成 以下
  • Git 克隆错误:“致命:不允许...引用的多次更新”

    我尝试时遇到错误git clone一个存储库 git clone https github com laradock laradock git Cloning into laradock remote Enumerating objects
  • 使用 LINQ 在 OrderBy 中自定义排序逻辑

    对字符串列表进行排序的正确方法是什么 我希望以下划线 开头的项目位于列表的底部 否则一切都是按字母顺序排列的 现在我正在做这样的事情 autoList OrderBy a gt a StartsWith ZZZZZZ a a 如果您想要自定
  • Android 媒体播放器错误 (1,-1010)

    我正在尝试从 URL 流式传输音乐 我正在使用 SeekBar 来更改歌曲的位置 尝试将歌曲的位置更改为尚未下载的位置时出现错误 在其他情况下 如果歌曲已完全下载 则代码可以正常工作 出现以下错误 E MediaPlayerNative 错
  • Spring boot嵌入式tomcat - 413请求实体太大

    我在 IBM 公共云上运行 我有 apu 连接来访问 Cloud Foundry 微服务 我已经浏览了很多帖子并尝试了各种方法 但我似乎无法让它发挥作用 这是我的 Spring Boot 属性文件配置设置 The name of the a
  • MySQL:在结果之间使用日期条件

    我有一个执行此操作的 SQL 语句 group by date having date between 2010 07 01 and 2010 07 10 结果如下 sum test day 20 2010 07 03 120 2010 0
  • 基于条件标准寻找模式

    我希望能够在相邻列中根据特定标准找到最常见的值 例如 gt ROW A ROW B gt Blue Jason gt Blue Jason gt Blue Charles gt Red Alfred gt Red Alfred gt Red
  • 回调函数抛出意外的“不一致的参数”错误

    我正在使用 GNU Octave 版本 4 4 1 我正在尝试通过包含两个滑块来制作简单振荡器的交互式绘图 这两个滑块将允许更改初始速度和振荡器质量 绘图本身以及带有一个滑块 用于速度 的脚本都显示良好 这是带有回调函数的脚本的一部分 fu
  • GCD 和 RunLoop

    在我的应用程序中我添加了一个CFMach端口参考 via CFMachPortCreateRunLoopSource 到线程CF运行循环 现在我问自己 这可以使用 GCD 来完成吗 让我们说 而不是生成我自己的NSThread并添加创建的C
  • git:如何将某个作者的所有提交重新设置为单独的分支?

    I m using some code for which no SCM is used and receive occasional updates in the form of all project files although on
  • 适用于套接字流的 C++/Java 序列化库?

    我需要用 C Obj C 编写一个服务器 它可以从用 Java 和 C 构建的多个客户端接收流数据 挑战 我需要有效地序列化和反序列化数据结构 一个 C 客户端将生成 128x96x2 维浮点数组以及一些元数据 每秒大约 30 次 视频功能
  • 如何在客户端服务中动态加载SPRING_PROFILES_ACTIVE值?

    我是 Spring 新手 正在创建 Spring Cloud 配置服务 我已成功创建配置服务 其中所有配置都在那里 在我的客户端服务中 这将从配置服务中获取所有必要的配置 我需要根据SPRING PROFILES ACTIVE清单文件中定义
  • 使用纹理贴图对球体进行凹凸贴图

    我们想用纹理贴图对球体进行凹凸贴图 然而 表面 球体的面积是纹理贴图面积的 10 倍 两者的面积均以像素为单位 描述纹理贴图用于凹凸贴图的不同方式 通常矩形纹理用于球体 texture u v 坐标用作球坐标的角度 结果是 纹素在赤道附近较
  • EF6 中的急切加载、延迟加载和显式加载

    我读过这个tutorial http www entityframeworktutorial net EntityFramework5 entity framework5 introduction aspx和这个article https
  • 仅当省略号处于活动状态时才显示工具提示

    我有下一个 div div class div class style width 158px title 如何仅在省略号处于活动状态时显示工具提示 我发现这个功能 function isEllipsisActive e return e
  • 我可以记住通用方法吗?

    我有 2 个昂贵的通用方法 public T DoStuff
  • 在Python Pillow中设置图像分辨率

    我正在使用 Python Pillow 来修改图像 每当我保存 jpeg 时 内部分辨率都会设置为 72dpi 我想看看如何将其设置为不同的值 我意识到这只是一个数字 在很多方面它毫无意义 我的动机是当我将图像读入 Photoshop 时使
  • 想要在用户单击完成后调用presentingViewController中的方法

    新手 iOS 开发人员在这里使用了一款 iOS 应用程序 我有一个 iOS 应用程序的设置部分 当用户单击 完成 时 我需要模式视图控制器 目前是这样 并且我想在presentingViewController 中调用一个名为 update
  • Swift 4 中的文本到语音转换

    我正在尝试将文本到语音功能集成到我的 iOS 应用程序中 为此我正在使用AVSpeechUtterance and AVSpeechSynthesisVoice类的AVFoundation框架 extension String func s