Я начинаю с Xcode 11.4.1 и Swift 5.1 для ma c OS Catalina 10.15.4, и я пытаюсь закодировать функцию для создания звукового файла из строки символов, содержащей текст:
import AppKit
func writeSpeech(textToSpeech: String, dirPath: String, fileName: String) -> Bool {
var mUrl: CFURL? = nil
var mSCh: SpeechChannel? = nil
var isErr: OSErr
// Create channel
isErr = NewSpeechChannel(nil, &mSCh)
if (isErr != noErr) {
return false
}
// File URL
mUrl = URL(fileURLWithPath: dirPath + "/" + fileName + ".aiff") as CFURL?
// mUrl = nil
// Set URL
SetSpeechProperty(mSCh!, kSpeechOutputToFileURLProperty, mUrl as CFURL?)
if (isErr != noErr) {
return false
}
// Save to file
isErr = SpeakCFString(mSCh!, textToSpeech as CFString, nil)
if (isErr != noErr) {
return false
}
return true }
У меня нет ошибок компиляции, ошибок времени выполнения и функция возвращает true, но, к сожалению, звуковой файл никогда не создается.
Если я использую nil вместо имени файла, текст воспроизводится правильно на динамике. В моем коде определенно что-то не так, но я не могу найти что-то, и у меня недостаточно навыков, чтобы решить эту проблему.
Кто-нибудь знает, что не так и как это сделать?