Setup Voice Verification

Uploading Api details to matches enrolled user's audio files with target user's audio file

try {
      final directory = await getApplicationDocumentsDirectory();
      var uri = Uri.parse("Your API");
      var request = http.MultipartRequest("POST", uri);

      // Input Source One .wav formate
      var sourceOnePath = '${directory.path}/${widget.username}_0.wav';
      var sourceOneFile = File(sourceOnePath);
      if (!await sourceOneFile.exists()) {
        throw Exception('Source one recording not found');
      }
      // var sourceOneWav = await _convertToWav(sourceOnePath, 0);
      request.files.add(await http.MultipartFile.fromPath(
        'sourceone',
        sourceOneFile.path,
        contentType: MediaType("audio", "wav"),
        filename: 'sourceone.wav',
      ));

      // Input Source Two .wav formate
      var sourceTwoPath = '${directory.path}/${widget.username}_1.wav';
      var sourceTwoFile = File(sourceTwoPath);
      if (!await sourceTwoFile.exists()) {
        throw Exception('Source two recording not found');
      }
      // var sourceTwoWav = await _convertToWav(sourceTwoPath, 1);
      request.files.add(await http.MultipartFile.fromPath(
        'sourcetwo',
        sourceTwoFile.path,
        contentType: MediaType("audio", "wav"),
        filename: 'sourcetwo.wav',
      ));

      // Input Source Three .wav formate
      var sourceThreePath = '${directory.path}/${widget.username}_2.wav';
      var sourceThreeFile = File(sourceThreePath);
      if (!await sourceThreeFile.exists()) {
        throw Exception('Source three recording not found');
      }
      // var sourceThreeWav = await _convertToWav(sourceThreePath, 2);
      request.files.add(await http.MultipartFile.fromPath(
        'sourcethree',
        sourceThreeFile.path,
        contentType: MediaType("audio", "wav"),
        filename: 'sourcethree.wav',
      ));

      // Input Source Four .wav formate
      File verifyFile;
      if (audioFiles.isNotEmpty) {
        verifyFile = audioFiles[0];
      } else {
        final verifyPath = '${directory.path}/${widget.username}_3.wav';
        verifyFile = File(verifyPath);
        if (!await verifyFile.exists()) {
          throw Exception('Verification recording not found');
        }
      }
      // var verifyWav = await _convertToWav(verifyFile.path, 3);
      request.files.add(await http.MultipartFile.fromPath(
        'target',
        verifyFile.path,
        contentType: MediaType("audio", "wav"),
        filename: 'target.wav',
      ));

      // Send request
      var response = await request.send();
      if (response.statusCode == 200) {
        var responseBody = await response.stream.bytesToString();
        final Map<String, dynamic> parsedResponse = jsonDecode(responseBody);
        final String score = parsedResponse['score'];
        print('Matching Score: $score');
        ScaffoldMessenger.of(context).showSnackBar(
          SnackBar(content: Text('Matching Score: $score')),
        );
      } else {
        throw Exception('Upload failed with status ${response.statusCode}');
      }
    } catch (e) {
      ScaffoldMessenger.of(context).showSnackBar(
        SnackBar(content: Text('Error during upload: $e')),
      );
    }

Last updated