#免責事項
この記事には素人が書いたガバコードが含まれています。このコードを実行したことにより発生した損害に対して、作者は一切の責任を負いかねます。
##動機
MADが作りたい->でも細切れの音声をいちいち開いて確認するのめんどい->かと言って全部のファイルに名前つけるのも面倒臭い
###動作確認した環境
Windows10
Python3.9.1
##事前準備
- Pythonのインストール
- Speech Recognizerとpyaudioをpipで落としておく
pyaudioの導入に失敗した人はこの記事に解決策が載ってました - Audacityのインストール(日本語化を推奨)
##下ごしらえ
Audacityにスライスしてない生の音声をD&Dとかで投げる
Ctrl+aで全選択してから重要エフェクト->増幅で音を一定にする(初期値で足りなければ適当にパラメータいじる)
解析->無音の検出でスライスする
上が閾値で真ん中が無音と判定するまでの時間(下はたぶん関係ない)
元音声ファイルによるけど
閾値を厳しめ(-50dB~)にして検出時間を短くするといい感じ
ある程度きつめにカットされるから自分でいらないラベルを削る必要があるかも
ラベルがつけられたら書き出す(ファイル->書き出し->複数ファイルの書き出し)
書き出し先フォルダとかを設定する
命名は"ファイル名プレフィックスの後に番号付け"を推奨
書き出しが終わるまで待つ
##調理
import pyaudio
import speech_recognition
import os
import glob
import json
import time
work_dir = input('作業先ディレクトリを絶対パスで指定してください > ')
if work_dir[-1:] != '\\':
work_dir = work_dir + '\\'
def rename(dir):
#ファイルリストの取得と存在確認
files = glob.glob(dir + '*')
if len(files) == None:
print('有効なファイルが存在しませんでした')
return
print('ファイルの取得に成功: ' + str(len(files)) + '件')
#ディレクトリを移動
if (len(dir) == None) or os.path.exists(dir) == False:
print('パスが間違っているようです')
return
if os.getcwd() != dir:
os.chdir(dir)
#初期化
r = speech_recognition.Recognizer()
index = 0
for file in files:
if os.path.exists(file) == False:
print('ファイルが存在しません')
break
if '.wav' not in file:
print('wavファイルではありませんでした')
continue
print('認識を開始...')
text = ''
try:
with speech_recognition.AudioFile(file) as source:
audio = r.record(source)
result = r.recognize_google(audio, language='ja-JP')
text = json.dumps(result, ensure_ascii=False)
except Exception as e:
print('読み取りに失敗しました。ファイル名を自分で設定してください')
text = 'failed'
if '"' in text:
text = text.strip('"')
print('認識結果: ' + text)
os.rename(file, dir + str(index) + '_' + text + '.wav')
index += 1
print('ファイル名の変更が完了しました')
time.sleep(1)
print('ファイル名の書き換えが終わりました')
rename(work_dir)
拡張子.pyで保存、Powershell開いて(例)python3 hoge.py
実行する
作業先ディレクトリにはさっきスライスを書き出したフォルダを指定する(例)C:\hogehoge\
完成品の名前がfailedになってるやつは解析失敗してるので自分でファイル名書き直してください
##できたもの
##結論
これいる?
#参考
https://qiita.com/daiarg/items/ff1b9f91d0804e6a8f18
https://qiita.com/sugi-juku/items/c92f8f170a6b455e15f2