작성자 없음
작성자 정보가 삭제된 글입니다.
해결된 질문
24.09.29 19:20 작성
·
41
·
수정됨
0
음성 통신 테스트를 할때
녹음을 못하는것 같습니다
어떻게 해결해야하나요...?
python test_total_mic.py 하면 밑에처럼 뜹니다....
마이크 설정은 부록을 보고 켜져있는것을 확인했습니다,,,,
녹음을 시작합니다!
녹음을 종료합니다.
Error in sys.excepthook:
Original exception was:
제가 친 코드 입니다
from openai import OpenAI
from pathlib import Path
import sounddevice as sd
from scipy.io.wavfile import write
from playsound import playsound
client = OpenAI()
def record_audio():
#비트레이트
fs = 44100
seconds = 3 # 음성의 길이
print('녹음을 시작합니다!')
record = sd.rec(int(seconds*fs), samplerate=fs, channels=2)
sd.wait() #대기
print('녹음을 종료합니다.')
audio_input_path = "audio_input.wav"
write(audio_input_path,fs,record)
return audio_input_path
def conn_whisper(audio_input_path):
audio_file= open(audio_input_path, "rb")
transcription = client.audio.transcriptions.create(
model="whisper-1",
file=audio_file
)
print(transcription.text)
text_input = transcription.text
return text_input
def conn_chatgpt(text_input):
completion = client.chat.completions.create(
model="gpt-4o-mini",
messages=[
{"role": "user","content": text_input}
]
)
print(completion.choices[0].message.content)
text_output = completion.choices[0].message.content
return text_output
def conn_tts(text_output):
speech_file_path = Path(__file__).parent / "audio_output.mp3"
response = client.audio.speech.create(
model="tts-1",
voice="alloy",
input=text_output
)
response.stream_to_file(speech_file_path)
audio_output_path = str(speech_file_path)
return audio_output_path
def main():
#마이크 input => audio_intput_path
audio_input_path = record_audio()
audio_input = open(audio_input_path,"rb")
text_input = conn_whisper(audio_input)
text_output = conn_chatgpt(text_input)
audio_output_path = conn_tts(text_output)
playsound(audio_output_path)
return
main()
답변 3
0
2024. 10. 05. 06:58
시간이 경과하여 해결되신 것으로 파악하고 해결처리 하겠습니다. 혹시라도 미해결 상태이시면 번거로우셔도 다시 한번 질문해주시면 감사하겠습니다.
0
2024. 09. 30. 07:59
안녕하세요? 다른 패키지 사용 방법을 안내해드리겠습니다.
아래 내용 참고해서 수정해보세요. 성공하시길 바라겠습니다.
이렇게 해도 안되면 번거로우시더라도 다시 한 번 알려주세요. 함께 확인하겠습니다.
아래에 패키지 부분과 record_audio함수 부분을 적어드리오니, 성공하시기 바라겠습니다.
기존 scipy 패키지 가져오는 부분 주석처리 또는 삭제
새롭게 sounddevice와 wave 패키지 가져오기
record = 행을 아래 코드로 수정
record = sd.rec(int(seconds * fs), samplerate=fs, channels=2, dtype='int16')
기존 record_audio함수 부분
write(audio_input_path, fs, record)
이 부분을 아래 with문 포함 5줄로 교체
수정부분 전체 코드입니다.
from openai import OpenAI
from pathlib import Path
import sounddevice as sd
# from scipy.io.wavfile import write
from playsound import playsound
import sounddevice as sd
import wave
client = OpenAI()
def record_audio():
fs = 44100 # 샘플링 레이트
seconds = 3 # 녹음 시간
print("녹음을 시작합니다...")
record = sd.rec(int(seconds * fs), samplerate=fs, channels=2, dtype='int16')
sd.wait() # 녹음이 끝날 때까지 기다립니다
print("녹음이 완료되었습니다.")
audio_input_path = 'audio_input.wav'
with wave.open(audio_input_path, 'wb') as wf:
wf.setnchannels(2)
wf.setsampwidth(2)
wf.setframerate(fs)
wf.writeframes(record)
return audio_input_path
0
안녕하세요, 인프런 AI 인턴입니다. 오서현님.
녹음이 시작되었으나 제대로 작동하지 않는 것 같아 몇 가지 확인사항과 해결방법을 안내드리겠습니다.
오류 메시지를 기반으로 녹음이 시작되고 종료된다는 출력 메시지는 있지만, 실제로 녹음된 데이터가 없는 상태로 보입니다. 이는 보통 마이크 설정, 권한 관련 문제 또는 코드 오류로 발생할 수 있습니다.
마이크 설정 확인:
코드 내 마이크 설정 재확인:
# example_mic.py
import sounddevice as sd
import numpy as np
import wavio
def record_audio(duration=5, sample_rate=44100):
print("녹음을 시작합니다!")
audio_data = sd.rec(int(duration * sample_rate), samplerate=sample_rate, channels=2, dtype='int16')
sd.wait()
print("녹음을 종료합니다.")
return audio_data
def save_audio(filename, audio_data, sample_rate):
wavio.write(filename, audio_data, sample_rate, sampwidth=2)
if __name__ == "__main__":
duration = 5 # 녹음 지속 시간 (초)
sample_rate = 44100 # 샘플 레이트
audio_data = record_audio(duration, sample_rate)
save_audio("recording.wav", audio_data, sample_rate)
print("오디오가 저장되었습니다.")
sounddevice
, wavio
등의 패키지가 최신 버전으로 설치되어 있는지 확인하세요.pip install sounddevice wavio
유사한 문제를 해결한 다른 질문들을 참고하시면 도움이 될 수 있습니다:
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
2024. 09. 29. 19:56
해결이 안됩니다
파이썬도 마이크 허용상태입니다