質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

1回答

1535閲覧

out_dirを定義したい

masamasa123

総合スコア2

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2021/11/06 15:30

#音声ファイルの分割
import wave
import struct
from scipy import fromstring,int16
import numpy as np
import os
import math
import speech_recognition as sr
import pandas as pd

一応既に同じ名前のディレクトリがないか確認。

file = os.path.exists("output2")
print(file)

if file == False:
#保存先のディレクトリの作成
os.mkdir("output2")
#filenameに読み込むファイル、timeにカットする間隔
def cut_wav(filename,time):
# timeの単位は[sec]

# ファイルを読み出し wavf = filename + '.wav' wr = wave.open(wavf, 'r') # waveファイルが持つ性質を取得 ch = wr.getnchannels() width = wr.getsampwidth() fr = wr.getframerate() fn = wr.getnframes() total_time = 1.0 * fn / fr integer = math.floor(total_time) # 小数点以下切り捨て t = int(time) # 秒数[sec] frames = int(ch * fr * t) num_cut = int(integer//t) # waveの実データを取得し、数値化 data = wr.readframes(wr.getnframes()) wr.close() X = np.frombuffer(data, dtype=int16) for i in range(num_cut+1): print(i) # 出力データを生成 outf = out_dir +'/' + str(1) + '.wav' start_cut = int(i*frames) end_cut = int(i*frames + frames) print(start_cut) print(end_cut) Y = X[start_cut:end_cut] outd = struct.pack("h" * len(Y), *Y) # 書き出し ww = wave.open(outf, 'w') ww.setnchannels(ch) ww.setsampwidth(width) ww.setframerate(fr) ww.writeframes(outd) ww.close() str_out="" list1=[wavf,"",""] df_x= pd.DataFrame([list1]) df_x.columns=["no","音声ファイル","変換"] for ii in range(num_cut+1): outf=out_dir +"/"+str(ii)+".wav" str_out=wav_to_text(outf) df_x.loc[ii]=[ii,str(ii)+ '.wav',str_out] #分割したファイルを受け取りた(output2というディレクトの.wavのこと)

def wav_to_text(wavfile):

r = sr.Recognizer() with sr.AudioFile('wavfile') as source: audio = r.record(source) text = r.recognize_google(audio, language='ja-JP') print(wav_to_text) return wav_to_text

print("input filename = output")
f_name = "10"
print("cut time = ")

cut_time = input()
cut_wav(f_name,float(cut_time))

以上のような設計をしましたが、name 'out_dir' is not dfinedと出てしまいます。
どこを手直しすればいいのか途方に暮れてしまっています。
ご教授の程よろしくお願いしたします

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ukyoda

2021/11/06 15:56

これ、全部同じファイルに書かれたコードということでいいですか? ↑のコードをみた感じ、out_dirに値を入れる処理が見当たらないので、 `name 'out_dir' is not defined`とエラーが出ているのだと思います。 ちなみに、out_dirとはどういった類いの変数なのですか?
meg_

2021/11/06 16:31

コードは「コードの挿入」で記入してください。 エラーが発生したのはどの行ですか?
masamasa123

2021/11/07 01:08

はいこれは全て同じファイルに書きました。 out_dirは長めの音声ファイルを分割し、その保存先として指定するつもりでした。 ちなみに保存先のディレクトリの名前は'output2'と指定しました。
masamasa123

2021/11/07 01:10

meg_様 すいませんでした。 エラーが生じたのは#出力データを生成 というところの一行目のout_dirが定義されてないと出ました
guest

回答1

0

Python

1out_dir = "output2" 2file = os.path.exists(out_dir) 3if file == False: 4 os.mkdir(out_dir)

とすれば良いかと思います。

投稿2021/11/07 01:20

meg_

総合スコア10577

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問