Ошибка при получении голосов. Невозможно прочитать текст.IOS

Программируем под IOS
Ответить
Anonymous
 Ошибка при получении голосов. Невозможно прочитать текст.

Сообщение Anonymous »

Я пишу простое приложение для iOS и мне хотелось бы иметь возможность преобразовывать в него текст в речь. У меня есть базовый класс аудиоменеджера с функцией «говорить»:

Код: Выделить всё

import Foundation
import AVFoundation

class AudioManager {
static let shared = AudioManager()

var audioPlayer: AVAudioPlayer?
var isPlaying: Bool {
return audioPlayer?.isPlaying ?? false
}
var playbackPosition: TimeInterval = 0

func playSound(named name: String) {
guard let url = Bundle.main.url(forResource: name, withExtension: "mp3") else {
print("Sound file not found")
return
}

do {
if audioPlayer == nil || !isPlaying {
audioPlayer = try AVAudioPlayer(contentsOf: url)
audioPlayer?.currentTime = playbackPosition
audioPlayer?.prepareToPlay()
audioPlayer?.play()
} else {
print("Sound is already playing")
}
} catch {
print("Error playing sound: \(error.localizedDescription)")
}
}

func stopSound() {
if let player = audioPlayer {
playbackPosition = player.currentTime
player.stop()
}
}

func speak(text: String) {
let synthesizer = AVSpeechSynthesizer()
let utterance = AVSpeechUtterance(string: text)
utterance.voice = AVSpeechSynthesisVoice(language: "en-GB")
synthesizer.speak(utterance)
}
}
И мое приложение отображает текст в ScrollView:

Код: Выделить всё

  ScrollView {
Text(self.description)
.padding()
.foregroundColor(.black)
.font(.headline)
.background(Color.gray.opacity(0))
}.onAppear {
AudioManager.shared.speak(text: self.description)
}
Однако текст не считывается (в симуляторе). Я вижу вывод в консоли:

Код: Выделить всё

Error fetching voices: Swift.DecodingError.dataCorrupted(Swift.DecodingError.Context(codingPath: [], debugDescription: "Invalid container metadata for _UnkeyedDecodingContainer, found keyedGraphEncodingNodeID", underlyingError: nil)). Using fallback voices.
Возможно, я делаю что-то не так, но не знаю что.

Подробнее здесь: https://stackoverflow.com/questions/797 ... d-out-text
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»