Je voulais transcrire la source sonore enregistrée avec l'iphone, j'ai donc converti le fichier m4a en fichier wav. Premier,
!pip install pydub
Quand j'ai installé pydub et essayé de l'exécuter,
[Errno 2] No such file or directory: 'ffprobe': 'ffprobe'
J'ai une erreur comme
J'ai téléchargé ffmpeg.exe à partir du site suivant Download FFmpeg Il s'agissait d'un fichier compressé appelé ffmpeg-97026-gea46b45e9c.7z.
Problems with AudioSegment.from_mp3
J'ai également déplacé le fichier vers un emplacement dans mon PATH.
$printenv
Ou
echo $PATH
J'ai vérifié le PATH avec.
Si vous avez ffmpeg, je ne pense pas que vous ayez besoin d'utiliser pydub,
pip install ffmpeg-python
Installez ffmpeg-python avec. J'ai pu convertir avec succès comme suit.
import ffmpeg
stream = ffmpeg.input("sample.m4a")
stream = ffmpeg.output(stream, 'output.wav')
ffmpeg.run(stream)
server.py
from flask import Flask, render_template, request,send_file,after_this_request,make_response,jsonify,redirect, url_for, send_from_directory
import pandas as pd
import os
import ffmpeg
import wave
app = Flask(__name__)
UPLOAD_DIR = './uploads'
ALLOWED_EXTENSIONS = set(['m4a','mp3','wav',])
app.config['UPLOAD_FOLDER'] = UPLOAD_DIR
@app.route('/')
def hello():
return render_template('index.html')
def allwed_file(filename):
# .Vérifiez s'il y en a et vérifiez l'extension
#1 si OK, 0 sinon
return '.' in filename and filename.rsplit('.', 1)[1].lower() in ALLOWED_EXTENSIONS
def transcribe_file(speech_file,num):
"""Transcribe the given audio file."""
from google.cloud import speech
from google.cloud.speech import enums
from google.cloud.speech import types
client = speech.SpeechClient()
with open(speech_file, 'rb') as audio_file:
content = audio_file.read()
if speech_file.encode == 'flac':
encode = speech.enums.RecognitionConfig.AudioEncoding.FLAC
elif speech_file.encode == 'wav':
encode = speech.enums.RecognitionConfig.AudioEncoding.LINEAR16
elif speech_file.encode == 'ogg':
encode = speech.enums.RecognitionConfig.AudioEncoding.OGG_OPUS
elif speech_file.encode == 'amr':
encode = speech.enums.RecognitionConfig.AudioEncoding.AMR
elif speech_file.encode == 'awb':
encode = speech.enums.RecognitionConfig.AudioEncoding.AMR_WB
else:
encode = speech.enums.RecognitionConfig.AudioEncoding.LINEAR16
audio = types.RecognitionAudio(content=content)
config = types.RecognitionConfig(
encoding=encode,
sample_rate_hertz=num,
language_code='ja-JP')
response = client.recognize(config, audio)
result_list=[]
for result in response.results:
result_list.append(result.alternatives[0].transcript)
return result_list
@app.route('/result', methods=['POST'])
def uploads_file():
#Déterminer si la demande est un message
if request.method == 'POST':
#Que faire si le fichier n'existe pas
if 'file' not in request.files:
make_response(jsonify({'result':'uploadFile is required.'}))
#Récupération de données
file = request.files['file']
#Traitement lorsqu'il n'y a pas de nom de fichier
if file.filename == '':
make_response(jsonify({'result':'filename must not empty.'}))
#Contrôle de fichier
if file and allwed_file(file.filename):
filename = file.filename
#Enregistrer le fichier
file.save(os.path.join(app.config['UPLOAD_FOLDER'],filename))
stream = ffmpeg.input("uploads/" + filename)
stream = ffmpeg.output(stream, 'output1.wav')
ffmpeg.run(stream)
wfile = wave.open('output1.wav', "r")
frame_rate = wfile.getframerate()
print(frame_rate)
result_list = transcribe_file('output1.wav',frame_rate)
os.remove('output1.wav')
return render_template('result.html',result_list=result_list)
return
if __name__ == "__main__":
app.run(debug=True)
index.html
<!DOCTYPE html>
<html lang="ja">
<head>
</head>
<body>
<div class="index">
<form method="post" action="/result" enctype="multipart/form-data" class="index">
<div>Télécharger un fichier audio</div>
<label>
<div class="inputindex">Sélectionnez les fichiers</div>
<input type="file" name="file" size="30" class="index">
</label>
<div>
<button type="submit" formmethod="POST" class="index">Envoyer</button>
</div>
</form>
</div>
</body>
</html>
result.html
<html lang="ja">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1.0,minimum-scale=1.0">
<link rel="stylesheet" href="{{url_for('static', filename='index.css')}}">
</head>
<body>
{% for result in result_list %}
<ul>{{result}}</ul>
{% endfor %}
</body>
</html>
export GOOGLE_APPLICATION_CREDENTIALS="[PATH]"
↑ Mettez le PATH du fichier json pour l'authentification dans PATH
Cloud Speech-to-Text Faisons un assistant vocal original (3) - API Cloud Speech Les ingénieurs actifs expliquent comment reconnaître la voix avec Python [pour les débutants]
↓ Cet article est recommandé. [Étudiez diverses API Google Cloud Speech-to-Text](https://tech-blog.optim.co.jp/entry/2020/02/21/163000#%E5%AE%9F%E9% 9A% 9B% E3% 81% AB% E8% A9% A6% E3% 81% 97% E3% 81% A6% E3% 81% BF% E3% 82% 8B)
Sites avec audio adaptés aux tests
Recommended Posts