Calculates the deep features used by the Sound Classifier.

    Internally the Sound Classifier calculates deep features for both model
    creation and predictions. If the same data will be used multiple times,
    calculating the deep features just once will result in a significant speed
    up.

    Parameters
    ----------
    audio_data : SArray
        Audio data is represented as dicts with key 'data' and 'sample_rate',
        see `turicreate.load_audio(...)`.

    Examples
    --------
    >>> my_audio_data['deep_features'] = get_deep_features(my_audio_data['audio'])
    >>> train, test = my_audio_data.random_split(.8)
    >>> model = tc.sound_classifier.create(train, 'label', 'deep_features')
    >>> predictions = model.predict(test)

def get_deep_features(audio_data, verbose=True):
    '''
    Calculates the deep features used by the Sound Classifier.

    Internally the Sound Classifier calculates deep features for both model
    creation and predictions. If the same data will be used multiple times,
    calculating the deep features just once will result in a significant speed
    up.

    Parameters
    ----------
    audio_data : SArray
        Audio data is represented as dicts with key 'data' and 'sample_rate',
        see `turicreate.load_audio(...)`.

    Examples
    --------
    >>> my_audio_data['deep_features'] = get_deep_features(my_audio_data['audio'])
    >>> train, test = my_audio_data.random_split(.8)
    >>> model = tc.sound_classifier.create(train, 'label', 'deep_features')
    >>> predictions = model.predict(test)
    '''
    from ._audio_feature_extractor import _get_feature_extractor

    if not _is_audio_data_sarray(audio_data):
        raise TypeError("Input must be audio data")

    feature_extractor_name = 'VGGish'
    feature_extractor = _get_feature_extractor(feature_extractor_name)

    return feature_extractor.get_deep_features(audio_data, verbose=verbose)