Eseguire un file WAV mediante le funzioni esterne del API di Flite
Vai alla navigazione
Vai alla ricerca
Flite è una libreria semplice e snella per eseguire la conversione da testo-a-parlato (text-to-speech). Consente, comunque, anche di eseguire un file audio di formato WAV.
E' necessario avere installata nel sistema e richiamare in Gambas la libreria condivisa: "libflite.so.2.2 ".
Di seguito un semplice esempio:
Library "libflite:2.2"
Public Struct cst_wave
type As Pointer
sample_rate As Integer
num_samples As Integer
num_channels As Integer
samples As Pointer
End Struct
Private CST_OK_FORMAT As Integer = 0
' cst_wave *new_wave()
Private Extern new_wave() As Pointer
' int cst_wave_load_riff(cst_wave *w, const char *filename)
Private Extern cst_wave_load_riff(w As Cst_wave, filename As String) As Integer
' int play_wave(cst_wave *w)
Private Extern play_wave(w As Cst_wave) As Integer
' void delete_wave(cst_wave *val)
Private Extern delete_wave(w As Cst_wave)
Public Sub Main()
Dim wav As Cst_wave
Dim filewave As String
filewave = "/percorso/del/file.wav"
' Inizializza la Struttura "cst_wave":
wav = new_wave()
' Verifica che il file caricato sia del formato riff-wav:
If cst_wave_load_riff(wav, filewave) <> CST_OK_FORMAT Then
Error.Raise("Impossibile leggere il file: formato errato !")
Endif
With wav
Print "Frequenza di campionamento: "; .sample_rate; " hertz"
Print "Numero canali: "; .num_channels
Print "Durata: "; Time(0, 0, 0, (.num_samples / .sample_rate) * 1000)
End With
' Esegue il file wav:
play_wave(wav)
' Va in chiusura:
delete_wave(wav)
End