class_docstr: The ``SpeechRecognitionData`` class is a :class:`~flash.core.data.data_module.DataModule` with a set of
  classmethods for loading data for speech recognition.
class_docstr_tok: ["The","``","SpeechRecognitionData","``","class","is","a",":","class",":","`","~flash.core.data.data_module.DataModule","`","with","a","set","of","classmethods","for","loading","data","for","speech","recognition","."]
docstr: Load the :class:`~flash.audio.speech_recognition.data.SpeechRecognitionData` from JSON files containing audio
  file paths and their corresponding targets.
  
  Input audio file paths will be extracted from the ``input_field`` field in the JSON files.
  The supported file extensions are: ``.aiff``, ``.au``, ``.avr``, ``.caf``, ``.flac``, ``.mat``, ``.mat4``,
  ``.mat5``, ``.mpc2k``, ``.ogg``, ``.paf``, ``.pvf``, ``.rf64``, ``.ircam``, ``.voc``, ``.w64``,
  ``.wav``, ``.nist``, and ``.wavex``.
  The targets will be extracted from the ``target_field`` field in the JSON files.
  To learn how to customize the transforms applied for each stage, read our
  :ref:`customizing transforms guide <customizing_transforms>`.
  
  Args:
      input_field: The field in the JSON files containing the audio file paths.
      target_field: The field in the JSON files containing the targets.
      train_file: The JSON file to use when training.
      val_file: The JSON file to use when validating.
      test_file: The JSON file to use when testing.
      predict_file: The JSON file to use when predicting.
      sampling_rate: Sampling rate to use when loading the audio files.
      field: The field that holds the data in the JSON file.
      input_cls: The :class:`~flash.core.data.io.input.Input` type to use for loading the data.
      transform: The :class:`~flash.core.data.io.input_transform.InputTransform` type to use.
      transform_kwargs: Dict of keyword arguments to be provided when instantiating the transforms.
      data_module_kwargs: Additional keyword arguments to provide to the
        :class:`~flash.core.data.data_module.DataModule` constructor.
  
  Returns:
      The constructed :class:`~flash.audio.speech_recognition.data.SpeechRecognitionData`.
  
  Examples
  ________
  
  .. testsetup::
  
      >>> import numpy as np
      >>> from pandas import DataFrame
      >>> import soundfile as sf
      >>> samplerate = 1000
      >>> data = np.random.uniform(-1, 1, size=(samplerate, 2))
      >>> _ = [sf.write(f"speech_{i}.wav", data, samplerate, subtype='PCM_24') for i in range(1, 4)]
      >>> _ = [sf.write(f"predict_speech_{i}.wav", data, samplerate, subtype='PCM_24') for i in range(1, 4)]
      >>> DataFrame.from_dict({
      ...     "speech_files": ["speech_1.wav", "speech_2.wav", "speech_3.wav"],
      ...     "targets": ["some speech", "some other speech", "some more speech"],
      ... }).to_json("train_data.json", orient="records", lines=True)
      >>> DataFrame.from_dict({
      ...     "speech_files": ["predict_speech_1.wav", "predict_speech_2.wav", "predict_speech_3.wav"],
      ... }).to_json("predict_data.json", orient="records", lines=True)
  
  The file ``train_data.json`` contains the following:
  
  .. code-block::
  
      {"speech_files":"speech_1.wav","targets":"some speech"}
      {"speech_files":"speech_2.wav","targets":"some other speech"}
      {"speech_files":"speech_3.wav","targets":"some more speech"}
  
  The file ``predict_data.json`` contains the following:
  
  .. code-block::
  
      {"speech_files":"predict_speech_1.wav"}
      {"speech_files":"predict_speech_2.wav"}
      {"speech_files":"predict_speech_3.wav"}
  
  .. doctest::
  
      >>> from flash import Trainer
      >>> from flash.audio import SpeechRecognitionData, SpeechRecognition
      >>> datamodule = SpeechRecognitionData.from_json(
      ...     "speech_files",
      ...     "targets",
      ...     train_file="train_data.json",
      ...     predict_file="predict_data.json",
      ...     batch_size=2,
      ... )  # doctest: +ELLIPSIS +NORMALIZE_WHITESPACE
      <BLANKLINE>
      ...
      >>> model = SpeechRecognition(backbone="patrickvonplaten/wav2vec2_tiny_random_robust")
      >>> trainer = Trainer(fast_dev_run=True)
      >>> trainer.fit(model, datamodule=datamodule)  # doctest: +ELLIPSIS +NORMALIZE_WHITESPACE
      Training...
      >>> trainer.predict(model, datamodule=datamodule)  # doctest: +ELLIPSIS +NORMALIZE_WHITESPACE
      Predicting...
  
  .. testcleanup::
  
      >>> import os
      >>> _ = [os.remove(f"speech_{i}.wav") for i in range(1, 4)]
      >>> _ = [os.remove(f"predict_speech_{i}.wav") for i in range(1, 4)]
      >>> os.remove("train_data.json")
      >>> os.remove("predict_data.json")
docstr_tok: ["Load","the",":","class",":","`","~flash.audio.speech_recognition.data.SpeechRecognitionData","`","from","JSON","files","containing","audio","file","paths","and","their","corresponding","targets",".","Input","audio","file","paths","will","be","extracted","from","the","``","input_field","``","field","in","the","JSON","files",".","The","supported","file","extensions","are",":","``",".aiff","``",",","``",".au","``",",","``",".avr","``",",","``",".caf","``",",","``",".flac","``",",","``",".mat","``",",","``",".mat4","``",",","``",".mat5","``",",","``",".mpc2k","``",",","``",".ogg","``",",","``",".paf","``",",","``",".pvf","``",",","``",".rf64","``",",","``",".ircam","``",",","``",".voc","``",",","``",".w64","``",",","``",".wav","``",",","``",".nist","``",",","and","``",".wavex","``",".","The","targets","will","be","extracted","from","the","``","target_field","``","field","in","the","JSON","files",".","To","learn","how","to","customize","the","transforms","applied","for","each","stage",",","read","our",":","ref",":","`","customizing","transforms","guide","<","customizing_transforms",">","`",".","Args",":","input_field",":","The","field","in","the","JSON","files","containing","the","audio","file","paths",".","target_field",":","The","field","in","the","JSON","files","containing","the","targets",".","train_file",":","The","JSON","file","to","use","when","training",".","val_file",":","The","JSON","file","to","use","when","validating",".","test_file",":","The","JSON","file","to","use","when","testing",".","predict_file",":","The","JSON","file","to","use","when","predicting",".","sampling_rate",":","Sampling","rate","to","use","when","loading","the","audio","files",".","field",":","The","field","that","holds","the","data","in","the","JSON","file",".","input_cls",":","The",":","class",":","`","~flash.core.data.io.input.Input","`","type","to","use","for","loading","the","data",".","transform",":","The",":","class",":","`","~flash.core.data.io.input_transform.InputTransform","`","type","to","use",".","transform_kwargs",":","Dict","of","keyword","arguments","to","be","provided","when","instantiating","the","transforms",".","data_module_kwargs",":","Additional","keyword","arguments","to","provide","to","the",":","class",":","`","~flash.core.data.data_module.DataModule","`","constructor",".","Returns",":","The","constructed",":","class",":","`","~flash.audio.speech_recognition.data.SpeechRecognitionData","`",".","Examples","________","..","testsetup",":",":",">",">",">","import","numpy","as","np",">",">",">","from","pandas","import","DataFrame",">",">",">","import","soundfile","as","sf",">",">",">","samplerate","=","1000",">",">",">","data","=","np.random.uniform","(","-1",",","1",",","size=","(","samplerate",",","2",")",")",">",">",">","_","=","[","sf.write","(","f","''","speech_","{","i","}",".wav","''",",","data",",","samplerate",",","subtype='PCM_24","'",")","for","i","in","range","(","1",",","4",")","]",">",">",">","_","=","[","sf.write","(","f","''","predict_speech_","{","i","}",".wav","''",",","data",",","samplerate",",","subtype='PCM_24","'",")","for","i","in","range","(","1",",","4",")","]",">",">",">","DataFrame.from_dict","(","{","...","``","speech_files","''",":","[","``","speech_1.wav","''",",","``","speech_2.wav","''",",","``","speech_3.wav","''","]",",","...","``","targets","''",":","[","``","some","speech","''",",","``","some","other","speech","''",",","``","some","more","speech","''","]",",","...","}",")",".to_json","(","``","train_data.json","''",",","orient=","''","records","''",",","lines=True",")",">",">",">","DataFrame.from_dict","(","{","...","``","speech_files","''",":","[","``","predict_speech_1.wav","''",",","``","predict_speech_2.wav","''",",","``","predict_speech_3.wav","''","]",",","...","}",")",".to_json","(","``","predict_data.json","''",",","orient=","''","records","''",",","lines=True",")","The","file","``","train_data.json","``","contains","the","following",":","..","code-block",":",":","{","``","speech_files","''",":","''","speech_1.wav","''",",","''","targets","''",":","''","some","speech","''","}","{","``","speech_files","''",":","''","speech_2.wav","''",",","''","targets","''",":","''","some","other","speech","''","}","{","``","speech_files","''",":","''","speech_3.wav","''",",","''","targets","''",":","''","some","more","speech","''","}","The","file","``","predict_data.json","``","contains","the","following",":","..","code-block",":",":","{","``","speech_files","''",":","''","predict_speech_1.wav","''","}","{","``","speech_files","''",":","''","predict_speech_2.wav","''","}","{","``","speech_files","''",":","''","predict_speech_3.wav","''","}","..","doctest",":",":",">",">",">","from","flash","import","Trainer",">",">",">","from","flash.audio","import","SpeechRecognitionData",",","SpeechRecognition",">",">",">","datamodule","=","SpeechRecognitionData.from_json","(","...","``","speech_files","''",",","...","``","targets","''",",","...","train_file=","''","train_data.json","''",",","...","predict_file=","''","predict_data.json","''",",","...","batch_size=2",",","...",")","#","doctest",":","+ELLIPSIS","+NORMALIZE_WHITESPACE","<","BLANKLINE",">","...",">",">",">","model","=","SpeechRecognition","(","backbone=","''","patrickvonplaten\/wav2vec2_tiny_random_robust","''",")",">",">",">","trainer","=","Trainer","(","fast_dev_run=True",")",">",">",">","trainer.fit","(","model",",","datamodule=datamodule",")","#","doctest",":","+ELLIPSIS","+NORMALIZE_WHITESPACE","Training","...",">",">",">","trainer.predict","(","model",",","datamodule=datamodule",")","#","doctest",":","+ELLIPSIS","+NORMALIZE_WHITESPACE","Predicting","...","..","testcleanup",":",":",">",">",">","import","os",">",">",">","_","=","[","os.remove","(","f","''","speech_","{","i","}",".wav","''",")","for","i","in","range","(","1",",","4",")","]",">",">",">","_","=","[","os.remove","(","f","''","predict_speech_","{","i","}",".wav","''",")","for","i","in","range","(","1",",","4",")","]",">",">",">","os.remove","(","``","train_data.json","''",")",">",">",">","os.remove","(","``","predict_data.json","''",")"]
code: def from_json(
      cls,
      input_field: str,
      target_field: Optional[str] = None,
      train_file: Optional[str] = None,
      val_file: Optional[str] = None,
      test_file: Optional[str] = None,
      predict_file: Optional[str] = None,
      sampling_rate: int = 16000,
      field: Optional[str] = None,
      input_cls: Type[Input] = SpeechRecognitionJSONInput,
      transform: INPUT_TRANSFORM_TYPE = InputTransform,
      transform_kwargs: Optional[Dict] = None,
      **data_module_kwargs: Any,
  ) -> "SpeechRecognitionData":
      """Load the :class:`~flash.audio.speech_recognition.data.SpeechRecognitionData` from JSON files containing audio
      file paths and their corresponding targets.
  
      Input audio file paths will be extracted from the ``input_field`` field in the JSON files.
      The supported file extensions are: ``.aiff``, ``.au``, ``.avr``, ``.caf``, ``.flac``, ``.mat``, ``.mat4``,
      ``.mat5``, ``.mpc2k``, ``.ogg``, ``.paf``, ``.pvf``, ``.rf64``, ``.ircam``, ``.voc``, ``.w64``,
      ``.wav``, ``.nist``, and ``.wavex``.
      The targets will be extracted from the ``target_field`` field in the JSON files.
      To learn how to customize the transforms applied for each stage, read our
      :ref:`customizing transforms guide <customizing_transforms>`.
  
      Args:
          input_field: The field in the JSON files containing the audio file paths.
          target_field: The field in the JSON files containing the targets.
          train_file: The JSON file to use when training.
          val_file: The JSON file to use when validating.
          test_file: The JSON file to use when testing.
          predict_file: The JSON file to use when predicting.
          sampling_rate: Sampling rate to use when loading the audio files.
          field: The field that holds the data in the JSON file.
          input_cls: The :class:`~flash.core.data.io.input.Input` type to use for loading the data.
          transform: The :class:`~flash.core.data.io.input_transform.InputTransform` type to use.
          transform_kwargs: Dict of keyword arguments to be provided when instantiating the transforms.
          data_module_kwargs: Additional keyword arguments to provide to the
            :class:`~flash.core.data.data_module.DataModule` constructor.
  
      Returns:
          The constructed :class:`~flash.audio.speech_recognition.data.SpeechRecognitionData`.
  
      Examples
      ________
  
      .. testsetup::
  
          >>> import numpy as np
          >>> from pandas import DataFrame
          >>> import soundfile as sf
          >>> samplerate = 1000
          >>> data = np.random.uniform(-1, 1, size=(samplerate, 2))
          >>> _ = [sf.write(f"speech_{i}.wav", data, samplerate, subtype='PCM_24') for i in range(1, 4)]
          >>> _ = [sf.write(f"predict_speech_{i}.wav", data, samplerate, subtype='PCM_24') for i in range(1, 4)]
          >>> DataFrame.from_dict({
          ...     "speech_files": ["speech_1.wav", "speech_2.wav", "speech_3.wav"],
          ...     "targets": ["some speech", "some other speech", "some more speech"],
          ... }).to_json("train_data.json", orient="records", lines=True)
          >>> DataFrame.from_dict({
          ...     "speech_files": ["predict_speech_1.wav", "predict_speech_2.wav", "predict_speech_3.wav"],
          ... }).to_json("predict_data.json", orient="records", lines=True)
  
      The file ``train_data.json`` contains the following:
  
      .. code-block::
  
          {"speech_files":"speech_1.wav","targets":"some speech"}
          {"speech_files":"speech_2.wav","targets":"some other speech"}
          {"speech_files":"speech_3.wav","targets":"some more speech"}
  
      The file ``predict_data.json`` contains the following:
  
      .. code-block::
  
          {"speech_files":"predict_speech_1.wav"}
          {"speech_files":"predict_speech_2.wav"}
          {"speech_files":"predict_speech_3.wav"}
  
      .. doctest::
  
          >>> from flash import Trainer
          >>> from flash.audio import SpeechRecognitionData, SpeechRecognition
          >>> datamodule = SpeechRecognitionData.from_json(
          ...     "speech_files",
          ...     "targets",
          ...     train_file="train_data.json",
          ...     predict_file="predict_data.json",
          ...     batch_size=2,
          ... )  # doctest: +ELLIPSIS +NORMALIZE_WHITESPACE
          <BLANKLINE>
          ...
          >>> model = SpeechRecognition(backbone="patrickvonplaten/wav2vec2_tiny_random_robust")
          >>> trainer = Trainer(fast_dev_run=True)
          >>> trainer.fit(model, datamodule=datamodule)  # doctest: +ELLIPSIS +NORMALIZE_WHITESPACE
          Training...
          >>> trainer.predict(model, datamodule=datamodule)  # doctest: +ELLIPSIS +NORMALIZE_WHITESPACE
          Predicting...
  
      .. testcleanup::
  
          >>> import os
          >>> _ = [os.remove(f"speech_{i}.wav") for i in range(1, 4)]
          >>> _ = [os.remove(f"predict_speech_{i}.wav") for i in range(1, 4)]
          >>> os.remove("train_data.json")
          >>> os.remove("predict_data.json")
  
      """
  
      ds_kw = {
          "input_key": input_field,
          "sampling_rate": sampling_rate,
          "field": field,
      }
  
      return cls(
          input_cls(
              RunningStage.TRAINING,
              train_file,
              target_key=target_field,
              **ds_kw,
          ),
          input_cls(
              RunningStage.VALIDATING,
              val_file,
              target_key=target_field,
              **ds_kw,
          ),
          input_cls(
              RunningStage.TESTING,
              test_file,
              target_key=target_field,
              **ds_kw,
          ),
          input_cls(RunningStage.PREDICTING, predict_file, **ds_kw),
          transform=transform,
          transform_kwargs=transform_kwargs,
          **data_module_kwargs,
      )
  
file_path: lightning-flash/src/flash/audio/speech_recognition/data.py
imports: from typing import Any, Dict, Optional, Sequence, Type
  from torch.utils.data import Dataset
  from flash.audio.speech_recognition.input import SpeechRecognitionCSVInput, SpeechRecognitionDatasetInput, SpeechRecognitionJSONInput, SpeechRecognitionPathsInput
  from flash.audio.speech_recognition.output_transform import SpeechRecognitionOutputTransform
  from flash.core.data.data_module import DataModule
  from flash.core.data.io.input import Input
  from flash.core.data.io.input_transform import INPUT_TRANSFORM_TYPE, InputTransform
  from flash.core.utilities.imports import _TOPIC_AUDIO_AVAILABLE
  from flash.core.utilities.stages import RunningStage
label_desc: Use image node_id 3 for calling the SpeechRecognitionData obj's underlying member method code with example usage: obj.from_json(cls, input_field, target_field, train_file, val_file, test_file, predict_file, sampling_rate, field, input_cls, transform, transform_kwargs) and returns: cls