JBGot7 Ответов: 0

Как редактировать код wav из речи пользователя в android studio?


Я делаю английскую заявку на местоимение правильно.Моя проблема с сохранением .wav-файл из речи пользователя.

Кодовая запись речи пользователя.
.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View view, MotionEvent motionEvent) {
                if(motionEvent.getAction() == MotionEvent.ACTION_DOWN){ //start recording
                    Toast.makeText(getApplicationContext(), "Recording...", Toast.LENGTH_LONG).show();
                    MediaRecorderReady();
                    try {
                        mediaRecorder.prepare();
                        mediaRecorder.start();   // Recording is now started
                    } catch (IllegalStateException e) {
                        e.printStackTrace();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }else if(motionEvent.getAction() == MotionEvent.ACTION_UP){ 
                    Toast.makeText(getApplicationContext(), "Audio Recorder successfully", Toast.LENGTH_SHORT).show();
                    if (mediaRecorder != null){
                        try{
                            mediaRecorder.stop();
                        }catch (RuntimeException e){

                        }finally {
                            mediaRecorder.release(); 
                            mediaRecorder = null;
                            uploadSound1(view);
                            Toast.makeText(StudyingActivity.this,"Successes upload 2",Toast.LENGTH_LONG).show();
                        }
                    }
                }
                return false;
            }
        });


private void MediaRecorderReady() {
       SimpleDateFormat formatter = new SimpleDateFormat("dd_MM_yyyy", Locale.KOREA);
       Date now = new Date();
       String outputFile = Environment.getExternalStorageDirectory().getAbsolutePath()+"/"+"record_"+formatter.format(now)+".wav";

       mediaRecorder = new MediaRecorder();
       mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
       mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
       mediaRecorder.setAudioEncoder(MediaRecorder.OutputFormat.AMR_NB);
       mediaRecorder.setOutputFile(outputFile);
   }


Sound.py файл
import librosa
import librosa.display
import matplotlib.pyplot as plt
from numpy.linalg import norm
from dtw import dtw
import datetime


today_date = datetime.date.today()

new_today_date = today_date.strftime('%d_%m_%Y')

name = 'record_'+(new_today_date)+'.wav'


y1, sr1 = librosa.load('words-english.wav') //can read
y2, sr2 = librosa.load(name)  //can't read


plt.subplot(1, 2, 1) 
mfcc1 = librosa.feature.mfcc(y1,sr1)   
librosa.display.specshow(mfcc1)
plt.subplot(1, 2, 2)
mfcc2 = librosa.feature.mfcc(y2, sr2)
librosa.display.specshow(mfcc2)


dist, cost, acc_cost, path = dtw(mfcc1.T, mfcc2.T, dist=lambda x, y: norm(x - y, ord=1))


print('%.3f' % dist)

librosa.output.write_wav('1.wav', y1, sr1)


Что я уже пробовал:

I can't read audiorecord from user speech (.wav) to python file but I can read TTS(Text to speech sound).


Эта ошибка в sound.py
D:\Users\Python\Python36\lib\site-packages\librosa\core\audio.py:14
  warnings.warn('PySoundFile failed. Trying audioread instead.')
Traceback (most recent call last):
  File "D:\Users\Python\Python36\lib\site-packages\librosa\core\aud
RuntimeError: Error opening 'record_15_12_2019.wav': File contains data in an unknown format.

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "d:/xampp/htdocs/wordsapp/sound/sound.py", line 17, in <module>
    y2, sr2 = librosa.load('record.wav')
  File "D:\Users\Python\Python36\lib\site-packages\librosa\core\audio.py", line 147, in load
    y, sr_native = __audioread_load(path, offset, duration, dtype)
  File "D:\Users\Python\Python36\lib\site-packages\librosa\core\audio.py", line 171, in __audioread_load
    with audioread.audio_open(path) as input_file:
  File "D:\Users\Python\Python36\lib\site-packages\audioread\__init__.py", line 116, in audio_open
    raise NoBackendError()
audioread.exceptions.NoBackendError

Richard MacCutchan

"Ошибка открытия 'record_15_12_2019.wav': файл содержит данные в неизвестном формате."
Сообщение говорит вам, почему это не удается.

JBGot7

Я пытался, но ничего не вышло.Можете ли вы посоветовать мне, как конвертировать формат wav?

Richard MacCutchan

Извините, понятия не имею. Как я уже сказал, сообщение понятно, этот пакет не понимает формат wav. Вам нужно сделать больше поиска, чтобы найти пакет, который может сделать преобразование.

JBGot7

окей.спасибо :)

0 Ответов