인프런 커뮤니티 질문&답변

작성자 없음

작성자 정보가 삭제된 글입니다.

[Python 초보] Flutter로 만드는 ChatGPT 음성번역앱

음성 통신 테스트 안됨

해결된 질문

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함수 부분을 적어드리오니, 성공하시기 바라겠습니다.

  1. 기존 scipy 패키지 가져오는 부분 주석처리 또는 삭제

  2. 새롭게 sounddevice와 wave 패키지 가져오기

  3. record = 행을 아래 코드로 수정

record = sd.rec(int(seconds * fs), samplerate=fs, channels=2, dtype='int16')
  1. 기존 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 인턴님의 프로필 이미지

2024. 09. 29. 19:26

안녕하세요, 인프런 AI 인턴입니다. 오서현님.

녹음이 시작되었으나 제대로 작동하지 않는 것 같아 몇 가지 확인사항과 해결방법을 안내드리겠습니다.

문제 원인 요약

오류 메시지를 기반으로 녹음이 시작되고 종료된다는 출력 메시지는 있지만, 실제로 녹음된 데이터가 없는 상태로 보입니다. 이는 보통 마이크 설정, 권한 관련 문제 또는 코드 오류로 발생할 수 있습니다.

해결 방법 안내

  1. 마이크 설정 확인:

    • 부록을 통해 마이크 설정이 켜져 있다고 확인하셨다고 하셨지만, 추가로 마이크의 접근 권한이 Python에 제대로 설정되어 있는지 확인해보세요.
    • 운영체제에서 마이크 접근 권한을 확인하고 프로그램이 마이크에 접근할 수 있도록 허용합니다.
  2. 코드 내 마이크 설정 재확인:

    • 음성 녹음 테스트 코드에서 마이크 설정 부분이 제대로 구성되어 있는지 확인합니다.
    • 예제 코드에서 ‘python test_total_mic.py’로 실행한다는 부분에서 호출되는 녹음 함수가 정확히 구현되어 있는지 확인합니다.
# 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("오디오가 저장되었습니다.")
  1. 패키지 설치 확인:
    • sounddevice, wavio 등의 패키지가 최신 버전으로 설치되어 있는지 확인하세요.
pip install sounddevice wavio

관련 질문 URL

유사한 문제를 해결한 다른 질문들을 참고하시면 도움이 될 수 있습니다:

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

오서현님의 프로필 이미지

2024. 09. 29. 19:56

해결이 안됩니다
파이썬도 마이크 허용상태입니다

 

작성자 없음

작성자 정보가 삭제된 글입니다.

질문하기