Fungsi ini menggunakan API dari Google Speak, dengan Google Speak ini kita dapat membuat teks berbicara. Namun sayang hanya dapat membuat teks berbisara sepanjang 100 karakter. Untuk menggunakan Google API ini tentu saja kita membutuhkan koneksi internet.
Dalam penggunaan API Google Speak ini parameter yang haru diatur pertama adalah teks yang ingin didengar, kedua pengucapannya dalam bahasa apa,
Berikut kode negara untuk pengucapan textnya.
Indonesia: id
Jerman: de
Denmark: da
Spanyol: es
Finlandia: fi
Prancis: fr
Inggris: en
Italia: it
Belanda: nl
Polandia: pl
Portugis: pt
Swedia: sv
dan parameter ketiga adalah untuk memanggil DoEvents yang kita ingin.
Option Explicit
Private Declare Function mciSendString Lib "winmm.dll" Alias "mciSendStringA" (ByVal lpstrCommand As String, ByVal lpstrReturnString As String, ByVal uReturnLength As Long, ByVal hwndCallback As Long) As Long
Private Declare Function URLDownloadToFile Lib "urlmon" Alias "URLDownloadToFileA" (ByVal pCaller As Long, ByVal szURL As String, ByVal szFileName As String, ByVal dwReserved As Long, ByVal lpfnCB As Long) As Long
Public Function GoogleSpeak(ByVal sText As String, Optional ByVal Language As String = "es", Optional ByVal bDoevents As Boolean) As Boolean
On Error Resume Next
Dim sTempPath As String, ml As String
Dim FileLength As Long
sText = Replace(sText, vbCrLf, " ")
If Len(sText) > 100 Then Exit Function
sTempPath = Environ("Temp") & "\TempMP3.MP3"
If URLDownloadToFile(0&, "http://translate.google.com/translate_tts?tl=" & Language & "&q=" & sText, sTempPath, 0&, 0&) = 0 Then
If mciSendString("open " & Chr$(34) & sTempPath & Chr$(34) & " type MpegVideo" & " alias myfile", 0&, 0&, 0&) = 0 Then
ml = String(30, 0)
Call mciSendString("status myfile length ", ml, 30, 0&)
FileLength = Val(ml)
If FileLength Then
If mciSendString("play myFile", 0&, 0&, 0&) = 0 Then
Do While mciSendString("status myfile position ", ml, 30, 0&) = 0
If Val(ml) = FileLength Then GoogleSpeak = True: Exit Do
If bDoevents Then DoEvents
Loop
End If
End If
Call mciSendString("close myfile", 0&, 0&, 0&)
End If
Kill sTempPath
End If
End Function
Private Sub Command1_Click()
Debug.Print GoogleSpeak("Terima kasih telah berkunjung.", "id", True)
End Sub