OEVoice Logo

Swift Compatibility Platform Compatibility License - MIT Version GitHub last commit Mastodon Twitter

概述

用于古英语的 AVSpeechSynthesis,带有 IPA 发音。

演示应用

Example 文件夹包含一个演示此软件包功能的应用程序。

安装

  1. 在 Xcode 中,转到 File -> Add Packages
  2. 粘贴仓库的 URL: https://github.com/ryanlintott/OEVoice 并按版本选择。

用法

使用 import OEVoice 导入软件包

平台

此软件包与 iOS 14 或更高版本兼容。

这是否适用于生产环境?

实际上,这取决于您。 我目前在自己的 Old English Wordhord app 中使用此软件包。

支持

如果您喜欢这个软件包,请请我喝杯咖啡以表示感谢!

ko-fi


详情

使用 AVSpeechSynthesizerIPA 而不是 AVSpeechSynthesizer 来访问 speakIPA(_ ipaString: String, voice: AVSpeechSynthesisVoice, willSpeak: ((String) -> Void)? = nil)

有 3 种初始化 AVSpeechSynthesizerIPA 的方法

  1. AVSpeechSynthesizerIPA.oeSupported - 使用此方法可确保设置了 OEVoice 支持的语言。
  2. AVSpeechSynthesizerIPA.init(language: String) - 强制选择一种语言。
  3. AVSpeechSynthesizerIPA.init?(languages: [String]) - 提供一个语言选项列表。

为什么必须提供语言?

AVspeechSynthesizerspeak() 函数内部,首次运行时会设置一个语言值。它不使用 AVSpeechUtterance 中使用的 AVSpeechSynthesisVoice 提供的语言,而是访问用户的首选语言(可能通过 UserDefaults 键 AppleLanguages)。如果首选语言与语音语言不匹配,则使用 IPA 的语音根本不准确。声音会被错误地发音,一些字符会被读作它们的字符名称而不是它们的声音,并且一些字符会被忽略。

我已经将此报告为一个错误(FB9688443)。 理想情况下,speak() 每次运行都只使用所提供语音的语言,而不需要引用用户的首选语言。

AVspeechSynthesizerIPA 的 init 确保即使在主要语言不兼容的设备上,发音也是准确的。如果用户的第一首选语言不兼容,则 UserDefaults 中的首选语言将临时更改为所需的语言,并在空字符串上运行 speak(),然后将语言更改回原来的语言。