SQL Server
SQL Server
IBM Cloud - Text to Speech - Synthesize Audio (GET)
See more IBM Text to Speech Examples
Synthesizes text to audio that is spoken in the specified voice.Chilkat SQL Server Downloads
-- Important: See this note about string length limitations for strings returned by sp_OAMethod calls.
--
CREATE PROCEDURE ChilkatSample
AS
BEGIN
DECLARE @hr int
-- Important: Do not use nvarchar(max). See the warning about using nvarchar(max).
DECLARE @sTmp0 nvarchar(4000)
DECLARE @success int
SELECT @success = 0
-- This example assumes the Chilkat API to have been previously unlocked.
-- See Global Unlock Sample for sample code.
DECLARE @http int
EXEC @hr = sp_OACreate 'Chilkat.Http', @http OUT
IF @hr <> 0
BEGIN
PRINT 'Failed to create ActiveX component'
RETURN
END
EXEC sp_OASetProperty @http, 'Login', 'apikey'
EXEC sp_OASetProperty @http, 'Password', 'my_apikey'
EXEC sp_OASetProperty @http, 'BasicAuth', 1
-- Use your base URL shown in the credentials web page (below your apikey)
DECLARE @myBaseUrl nvarchar(4000)
SELECT @myBaseUrl = 'https://api.us-south.text-to-speech.watson.cloud.ibm.com/instances/31941e96-7b89-4d56-8993-9cd8f18ec2d8'
DECLARE @sbUrl int
EXEC @hr = sp_OACreate 'Chilkat.StringBuilder', @sbUrl OUT
EXEC sp_OAMethod @sbUrl, 'Append', @success OUT, @myBaseUrl
EXEC sp_OAMethod @sbUrl, 'Append', @success OUT, '/v1/synthesize?accept=ACCEPT_TYPE&voice=CHOSEN_VOICE&text=TEXT_TO_SYNTHESIZE'
-- Choose "audio/wav" for the output file type.
DECLARE @numReplaced int
EXEC sp_OAMethod @http, 'UrlEncode', @sTmp0 OUT, 'audio/wav'
EXEC sp_OAMethod @sbUrl, 'Replace', @numReplaced OUT, 'ACCEPT_TYPE', @sTmp0
-- See the choices for voices at https://cloud.ibm.com/apidocs/text-to-speech#synthesize-audio-get
EXEC sp_OAMethod @sbUrl, 'Replace', @numReplaced OUT, 'CHOSEN_VOICE', 'en-US_MichaelVoice'
DECLARE @textToSynthesize nvarchar(4000)
SELECT @textToSynthesize = 'When life gives you lemons, order the lobster tail.'
EXEC sp_OAMethod @http, 'UrlEncode', @sTmp0 OUT, @textToSynthesize
EXEC sp_OAMethod @sbUrl, 'Replace', @numReplaced OUT, 'TEXT_TO_SYNTHESIZE', @sTmp0
-- Send the GET to synthesize the voice.
-- The response file will be contained in bdResponseBody
DECLARE @bdResponseBody int
EXEC @hr = sp_OACreate 'Chilkat.BinData', @bdResponseBody OUT
EXEC sp_OAMethod @sbUrl, 'GetAsString', @sTmp0 OUT
EXEC sp_OAMethod @http, 'QuickGetBd', @success OUT, @sTmp0, @bdResponseBody
IF @success = 0
BEGIN
EXEC sp_OAGetProperty @http, 'LastErrorText', @sTmp0 OUT
PRINT @sTmp0
EXEC @hr = sp_OADestroy @http
EXEC @hr = sp_OADestroy @sbUrl
EXEC @hr = sp_OADestroy @bdResponseBody
RETURN
END
DECLARE @respStatusCode int
EXEC sp_OAGetProperty @http, 'LastStatus', @respStatusCode OUT
PRINT 'response status code = ' + @respStatusCode
IF @respStatusCode = 200
BEGIN
EXEC sp_OAMethod @bdResponseBody, 'WriteFile', @success OUT, 'qa_output/lobster.wav'
PRINT 'Success!'
END
ELSE
BEGIN
EXEC sp_OAMethod @bdResponseBody, 'GetString', @sTmp0 OUT, 'utf-8'
PRINT @sTmp0
END
EXEC @hr = sp_OADestroy @http
EXEC @hr = sp_OADestroy @sbUrl
EXEC @hr = sp_OADestroy @bdResponseBody
END
GO