Skip to content

Latest commit

 

History

History
121 lines (88 loc) · 2.88 KB

Quickstart - Create Audiobooks.md

File metadata and controls

121 lines (88 loc) · 2.88 KB
title hide_title status
Quickstart - Create Audiobooks
true
stable

Create audiobooks using neural Text to speech

Step 1: Load libraries and add service information

from synapse.ml.core.platform import *

if running_on_synapse():
    from notebookutils import mssparkutils

# Fill this in with your Azure AI service information
service_key = find_secret(
    secret_name="ai-services-api-key", keyvault="mmlspark-build-keys"
)  # Replace this line with a string like service_key = "dddjnbdkw9329"
service_loc = "eastus"

storage_container = "audiobooks"
storage_key = find_secret(
    secret_name="madtest-storage-key", keyvault="mmlspark-build-keys"
)
storage_account = "anomalydetectiontest"

Step 2: Attach the storage account to hold the audio files

spark_key_setting = f"fs.azure.account.key.{storage_account}.blob.core.windows.net"
spark.sparkContext._jsc.hadoopConfiguration().set(spark_key_setting, storage_key)
import os
from os.path import exists, join

mount_path = f"wasbs://{storage_container}@{storage_account}.blob.core.windows.net/"
if running_on_synapse():
    mount_dir = join("/synfs", mssparkutils.env.getJobId(), storage_container)
    if not exists(mount_dir):
        mssparkutils.fs.mount(
            mount_path, f"/{storage_container}", {"accountKey": storage_key}
        )
elif running_on_databricks():
    if not exists(f"/dbfs/mnt/{storage_container}"):
        dbutils.fs.mount(
            source=mount_path,
            mount_point=f"/mnt/{storage_container}",
            extra_configs={spark_key_setting: storage_key},
        )

Step 3: Read in text data

from pyspark.sql.functions import udf


@udf
def make_audio_filename(part):
    return f"wasbs://{storage_container}@{storage_account}.blob.core.windows.net/alice_in_wonderland/part_{part}.wav"


df = (
    spark.read.parquet(
        "wasbs://[email protected]/alice_in_wonderland.parquet"
    )
    .repartition(10)
    .withColumn("filename", make_audio_filename("part"))
)

display(df)

Step 4: Synthesize audio from text

from synapse.ml.services.speech import TextToSpeech

tts = (
    TextToSpeech()
    .setSubscriptionKey(service_key)
    .setTextCol("text")
    .setLocation(service_loc)
    .setErrorCol("error")
    .setVoiceName("en-US-SteffanNeural")
    .setOutputFileCol("filename")
)

audio = tts.transform(df).cache()
display(audio)

Step 5: Listen to an audio file

from IPython.display import Audio


def get_audio_file(num):
    if running_on_databricks():
        return f"/dbfs/mnt/{storage_container}/alice_in_wonderland/part_{num}.wav"
    else:
        return join(mount_dir, f"alice_in_wonderland/part_{num}.wav")


Audio(filename=get_audio_file(1))