Comparative-Analysis-of-Speech-Synthesis-Models
/
TensorFlowTTS
/examples
/ios
/TF_TTS_Demo
/FastSpeech2.swift
// | |
// FastSpeech2.swift | |
// HelloTensorFlowTTS | |
// | |
// Created by 안창범 on 2021/03/09. | |
// | |
import Foundation | |
import TensorFlowLite | |
class FastSpeech2 { | |
let interpreter: Interpreter | |
var speakerId: Int32 = 0 | |
var f0Ratio: Float = 1 | |
var energyRatio: Float = 1 | |
init(url: URL) throws { | |
var options = Interpreter.Options() | |
options.threadCount = 5 | |
interpreter = try Interpreter(modelPath: url.path, options: options) | |
} | |
func getMelSpectrogram(inputIds: [Int32], speedRatio: Float) throws -> Tensor { | |
try interpreter.resizeInput(at: 0, to: [1, inputIds.count]) | |
try interpreter.allocateTensors() | |
let data = inputIds.withUnsafeBufferPointer(Data.init) | |
try interpreter.copy(data, toInputAt: 0) | |
try interpreter.copy(Data(bytes: &speakerId, count: 4), toInputAt: 1) | |
var speedRatio = speedRatio | |
try interpreter.copy(Data(bytes: &speedRatio, count: 4), toInputAt: 2) | |
try interpreter.copy(Data(bytes: &f0Ratio, count: 4), toInputAt: 3) | |
try interpreter.copy(Data(bytes: &energyRatio, count: 4), toInputAt: 4) | |
let t0 = Date() | |
try interpreter.invoke() | |
print("fastspeech2: \(Date().timeIntervalSince(t0))s") | |
return try interpreter.output(at: 1) | |
} | |
} | |